我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

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

苏南大叔:scrapy爬虫系列:scrapy入门demo - scrapy-start-demo
scrapy爬虫系列:scrapy入门demo(图6-1)

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

本文仅仅是入门demo,并非正常的scrapy项目构成。如果想了解完整版本的scrapy项目,请参考:

基础环境

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

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

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

苏南大叔:scrapy爬虫系列:scrapy入门demo - python-logo
scrapy爬虫系列:scrapy入门demo(图6-2)

下载scrapy

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

pip install scrapy

苏南大叔:scrapy爬虫系列:scrapy入门demo - pip_install_scrapy
scrapy爬虫系列:scrapy入门demo(图6-3)

苏南大叔:scrapy爬虫系列:scrapy入门demo - pip_install_scrapy_cmd
scrapy爬虫系列:scrapy入门demo(图6-4)

安装好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(图6-5)

运行脚本

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

scrapy runspider quotes_spider.py -o quotes.json

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

苏南大叔:scrapy爬虫系列:scrapy入门demo - folder_json
scrapy爬虫系列:scrapy入门demo(图6-6)

分析

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

  • 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爬虫框架的使用方法。

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

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

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