如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留链接信息。

苏南大叔做了这么多篇的铺垫,终于可以写到scrapy的正题了。scrapy爬虫是目前最流行的python框架,全世界的人都在关注这款scrapy的节奏。

其实,苏南大叔并不对这个scrapy爬虫特别感冒,毕竟以前用php或者.net也经常写类似的功能。但是出于学习新知识,保持与世界同步的目的,苏南大叔也来研究研究这款scrapy爬虫框架。

基础环境

苏南大叔准备在最新的python3.7基础上,使用scrapy这款爬虫框架。那么就注定了要遇到更多的困难。不过,遇到问题就解决问题嘛。这不,写到这篇文章的时候,相关的问题的解决方案都在前一周的内容中,进行了说明。当然,如果您害怕太多未知问题,您也可以使用最保险的python27,情况会好很多。

一年前,苏南大叔研究这款scrapy的时候,主流还是python27。但是今年,python3的声音明显壮大。所以,顺应时代潮流吧,少年!如果您安装过程中,遇到了一些问题,可以翻看文末链接。

理论上来说,本文叙述的scrapy的内容上与操作系统是win10还是mac无关的。截图所示演示环境为win10python的版本号为3.7.0

scrapy爬虫系列:scrapy入门demo - python-logo
scrapy爬虫系列:scrapy入门demo(图5-1)

下载scrapy

通过pip下载scrapy的脚本如下:

pip install scrapy

scrapy爬虫系列:scrapy入门demo - pip_install_scrapy
scrapy爬虫系列:scrapy入门demo(图5-2)

scrapy爬虫系列:scrapy入门demo - pip_install_scrapy_cmd
scrapy爬虫系列:scrapy入门demo(图5-3)

安装好scrapy之后,可以使用scrapy version来查看版本号。

scrapy version

第一个demo

官方文档给出了第一个demo。这个demo的主要功用是:抓取目标网址的内容,并把它保存到.json文件中。

官方链接见这里:

newsn.net:这里是【评论】可见内容

quotes_spider.py文件,代码如下:

import scrapy
class QuotesSpider(scrapy.Spider):
    name = "quotes"
    start_urls = [
        'http://quotes.toscrape.com/tag/humor/',
    ]
    def parse(self, response):
        for quote in response.css('div.quote'):
            yield {
                'text': quote.css('span.text::text').extract_first(),
                'author': quote.xpath('span/small/text()').extract_first(),
            }
        next_page = response.css('li.next a::attr("href")').extract_first()
        if next_page is not None:
            yield response.follow(next_page, self.parse)

scrapy爬虫系列:scrapy入门demo - python_code
scrapy爬虫系列:scrapy入门demo(图5-4)

运行脚本

在项目代码更目录下,运行下面的脚本。就可以把抓取到的内容,保存为一个json文件。您如果想知道,为啥要保存为一个json。其实就是因为这个最简单嘛,入门demo太复杂的话,新手就看不懂了。对不?

scrapy runspider quotes_spider.py -o quotes.json

如果一切顺利的话,就可以在同目录下面获得quotes.json文件。

scrapy爬虫系列:scrapy入门demo - folder_json
scrapy爬虫系列:scrapy入门demo(图5-5)

分析

苏南大叔接下来,对上述代码,做点小小的代码分析:

  • scrapy runspider 这个是基本套路,执行一个爬虫
  • quotes_spider.py是主要的逻辑体。
  • -o quotes.json,就是输出到.json文件的意思了。
  • .css这个就类似于jquery的css相关语法,可以精确定位到要获取的数据。
  • .xpath这个就是类似于解析dom树的时候的xpath语法,可以更精确的匹配获取数据。
  • parse()这个是个套路函数,用于解析数据,通过yield返回数据。需要仔细关注yield部分。

其实代码体就这么几行,大家可以尽情发挥想象力,去猜测上面的功用。对比一下,我们所熟悉的php代码,这个python的代码的缩进是非常重要的,就是靠缩进来代替{}的。这点,对于新手也尤其重要。

大概的思路就是:爬虫quotesstart_urls开始爬行,默认回调函数parse(),通过.css.xpath取得数据,通过yield返回数据。取得下一页链接后,再次调用默认回调函数parse()

相关链接

  • 《pip install的时候,提示缺少'cl.exe',该怎么办?》

https://newsn.net/say/pip-vc.html

  • 《win环境,python37如何安装libxml2?》

https://newsn.net/say/python-libxml2-win.html

  • 《win环境,如何通过pip离线安装Twisted?》

https://newsn.net/say/python-twisted.html

  • 《win环境,python如何解决错误:No module named 'win32api'》

https://newsn.net/say/python-win32api.html

总结

本篇文章,就运行官方demo的第一个例子,随着官方的说明文档。苏南大叔和大家一起学习scrapy爬虫框架的使用方法。

 【python】秘籍文章入口,仅传授于有缘之人   python    scrapy

本站的忠实读者小伙伴,正在阅读下面这些文章:

欢迎转载传播本篇原创文章,转载请保留链接及作者信息。
欢迎指正文字或逻辑错误,将会择优在文末列出您的信息。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

苏南大叔需要你的支持

感谢您的打赏,让我更有动力,将更多精彩教程文章,呈现给大家!谢谢!