scrapypython中⽂⼿册_scrapy官⽅⽂档读完总结
经过⼀天多时间在wiki上将scrapy官⽅的翻译版快速读了⼀遍,对scrapy有了⼀个⼤概的了解和熟悉。下⾯做⼀个快速总结:
1.创建项⽬:
scrapy startproject tutorial
cd tutorial #进⼊刚刚创建的⽂件夹内
scrapy genspider ⽂件名 ⽹站⽹址 #创建完成
2.编写Item
Item 是保存爬取到的数据的容器;其使⽤⽅法和 python 字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定义字段错误。如果item⾥未定义,spider所爬的数据是⽆法从传⼊进去的。
3.编写爬⾍
Spider 是⽤户编写⽤于从单个⽹站(或者⼀些⽹站)爬取数据的类。其包含了⼀个⽤于下载的初始 URL,
如何跟进⽹页中的链接以及如何分析页⾯中的内容, 提取⽣成item的⽅法。为了创建⼀个 Spider,您必须继承scrapy.Spider类, 且定义以下三个属性:
name: ⽤于区别 Spider。 该名字必须是唯⼀的,您不可以为不同的 Spider 设定相同的名字。
start_urls: 包含了 Spider 在启动时进⾏爬取的 url 列表。 因此,第⼀个被获取到的页⾯将是其中之⼀。 后续的 URL 则从初始的 URL 获取到的数据中提取。
parse()是 spider 的⼀个⽅法。 被调⽤时,每个初始 URL 完成下载后⽣成的Response对象将会作为唯⼀的参数传递给该函数。 该⽅法负责解析返回的数据(response data),提取数据(⽣成 item)以及⽣成需要进⼀步处理的 URL 的 `Request 对象。
(1)如上图所⽰,⾸先将整个节点给选择出来(response.xpath('//ul/li')并对整个节点进⾏循环,然后再对其内各个要素进⾏选取。
(2)爬取多页:将某⼀页的要选取的要素提取出来,确定选取的内容。然后在出URL的规律将URL传⼊parse函数(如箭头所⽰)
4.运⾏爬⾍
scrapy crawl ⽂件名
5.运⾏流程
Spider 类定义了如何爬取某个(或某些)⽹站。包括了爬取的动作(例如:是否跟进链接)以及如何从⽹页的内容中提取结构化数据(爬取item)。换句话说,Spider 就是您定义爬取的动作及分析某个⽹页(或者是有些⽹页)的地⽅。
对 spider 来说,爬取的循环类似下⽂:
以初始的 URL 初始化 Request,并设置回调函数。当该 request 下载完毕并返回时,将⽣成 response,并作为参数传给该回调函数。
spider 中初始的 request 是通过调⽤start_requests()来获取的。start_requests()读取start_urls 中的 URL, 并以parse为回调函数⽣成Request。
在回调函数内分析返回的(⽹页)内容,返回 Item 对象或者 Request 或者⼀个包括⼆者的可迭代容器。 返回的 Request 对象之后会经过Scrapy 处理,下载相应的内容,并调⽤设置的 callback 函数(函数可相同)。
python官方文档中文版
在回调函数内,您可以使⽤ 选择器(Selectors) (您也可以使⽤ BeautifulSoup, lxml 或者您想⽤的任何解析器) 来分析⽹页内容,并根据分析的数据⽣成 item。
最后,由 spider 返回的 item 将被存到数据库(由某些 Item Pipeline 处理)或使⽤ Feed exports 存⼊到⽂件中。
另⼀个在单个回调函数中返回多个 Request 以及 Item 的例⼦: