Scrapy - 普通的Spider(一)

CrawlSpider

这个是Spider中爬取一般网站最常用的一种Spider,因为它提供了一种方便的机制可以自定义一套规则去追踪链接。它可能对特殊的网站或项目来说不是最适合的Spider,但是对一般情况来说已经足够了,因此我们可从这种Spider开始学习,然后修改它,或重新写一个自定义的Spider。除了从父类集成来的属性,这个Spider还有特有的属性和方法:

rules - 一个Rule对象的列表。每一个Rule对象都定义了一个爬取网站的规则。如果多条规则适用于同一个链接,则根据它们在rules中定义的顺序,适用第一条规则。

parse_start_url(respone) - 这个方法是为处理start_urls的response而调用的,它使得我们可以解析初始的response对象,必须返回的是一个Item对象或一个Request对象或包含前两者中任意一个的可迭代对象。

Crawling rules

定义CrawlSpider爬取规则的对象。接收几个参数:

link_extractor - 一个定义如何从页面中获取链接的Link Extractor对象。

callback - 一个可调用的方法或一个字符串(该Spider中同名的方法会被调用),当link_extractor中获取到链接时调用该方法。该方法要接收一个response作为其第一个参数,必须返回一个包含Item和Request对象(或他们的子类)的列表。注意:当在写crawl Spider的规则时,避免使用parse作为回调方法,因为CrawlSpider已经使用过parse方法来实现它的逻辑。因此如果你重写了parse方法,那crawl Spider就不会正常工作了。

cb_kwargs - 一个包含将传递给回调方法的关键字参数的字典。

follow - 布尔值,定义是否需要追踪从每一个response中提取到的链接。如果callback是None的话,follow默认值是True,否则默认的是False。

process_links - 一个可调用的方法或一个字符串(该Spider中同名的方法会被调用),当从response中使用指定的link_extractor提取出链接的列表时候调用。主要的用做筛选的目的。

process_request - 一个可调用的方法或一个字符串(该Spider中同名的方法会被调用),当使用crawl Spider的规则生成request的时候调用,必须返回一个request或None(过滤掉不需要的request)。

Example:

Scrapy - 普通的Spider(一)_第1张图片

这个Spider会从example.com的主页开始爬取,收集category链接和item链接,然后使用parse_item方法解析Item链接的页面。对每一个Item的response,使用XPath从页面中提取一些数据,然后用这些数据生成一个Item对象。




你可能感兴趣的:(Scrapy,Python)