Scrapy爬取网页内容范例-翻译整理自官方文档

By | April 3, 2016

Scrapy是用Python开发的一个爬取网站以及获取结构化数据的应用框架,也就是一个爬虫框架。Scrapy易学习、易使用,官方资料详实。虽然本人是新手,但使用它抓取到想要的数据,感受到它的便利,由此不得不说,Scrapy是抓取网站数据的必备良品。

本文使用的Scrapy版本是1.0.5,至于各平台怎样安装Scrapy,请参阅《官方用户手册》:http://doc.scrapy.org/en/1.0/intro/install.html ,找个时间我会把在Fedora下的安装过程贴在博客上。这里的例子是抓取问答网站StackOverflow.com的问题。

余话少说,转入正题:

  1. 首先是创建一个Scrapy项目:

    执行以上shell命令后,将在本目录中创建一个名为testproj的目录,这是项目的根目录,该目录下有一个部署配置文件(scrapy.cfg)和与项目同名的Python模块目录(其实就是编写爬虫代码所在的目录),于是默认的项目目录结构如下:

  1. 定义Item(Item保存你想要获得的数据项):
    文件位置:testproj/items.py(提示:以下所示的相对路径均相对于根目录)
  2. 现在可以编写需要执行的真正爬虫代码了:
    文件位置:testproj/spiders/stackoverflow_spider.py

    代码解析:

    • 类中的name属性是该爬虫在这个Scrapy项目中的唯一标识,取名不能与同项目的其他爬虫相同。
    • start_urls属性指定要爬取的起始网络地址(域名或IP),可沿着从这些地址获取的内容提取出下一批需要爬取的地址,也可以从获取的内容中提取出需要的资料
    • parse()方法:是Scrapy爬虫默认的方法(可在配置HTTP请求的时候指定处理该请求对应的响应的类方法)。用于解析响应数据和提取信息,以及可以把其他的网络目标放进地址池(通过Request对象)
      现在已经完成爬虫的搭建,接下来是运行爬虫
  3. 运行爬虫:
    切换到项目的根目录,然后:

    代码解析:

    • -o参数表示将item的结果以XML、JSON或CSV格式输出到文件中,默认是JSON。
    • -o后面的是文件名,如不指定位置,则保存在项目根目录。

注意注意:该爬虫会抓取StackOverflow网站的所有在排行榜单上的问答条目的相关信息,由于上面有很多很多的问答,一般来说是不可能全部爬取的,而程序会不停地抓取,即使他们不阻止你的爬取,你的硬盘也吃不消,全部问答也没什么用,所以请适当退出爬取,如果运行过程中想退出,请使用Ctrl+c组合键,一次按不停,按两次。


© 2016 – 2018, Navin. All rights reserved.

鉴于本人的相关知识储备以及能力有限,本博客的观点或者描述如有错漏或是有考虑不周到的地方还请多多包涵,也欢迎指正,一起学习,共同进步。

0