栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

了解CrawlSpider中如何使用规则

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

了解CrawlSpider中如何使用规则

rules属性

CrawlSpider
指定如何从页面提取链接以及应为这些链接调用哪些回调。它们由
parse()
该类中实现的默认方法处理。

因此,每当你要触发URL规则时,只需要产生一个

scrapy.Request(url, self.parse),Scrapy
引擎就会向该URL发送一个请求并将规则应用于响应。

链接的提取(可能使用或可能不使用

restrict_xpaths
)是通过为该规则注册的linkExtractor对象完成的。如果设置了属性,它基本上会搜索整个页面中的所有
<a>s
<area>s
元素,或者仅搜索应用
restrict_xpaths
表达式后获得的元素。

例:
例如,假设你有一个CrawlSpider,如下所示:

from scrapy.contrib.spiders.crawl import CrawlSpider, Rulefrom scrapy.contrib.linkextractors import linkExtractorclass MySpider(CrawlSpider):    start_urls = ['http://someurlhere.com']    rules = (        Rule( linkExtractor(restrict_xpaths=[     "//ul[@]",     "//ul[@]"]), callback='parse'        ),        Rule( linkExtractor(allow='/product.php?id=d+'), callback='parse_product_page'        ),    )    def parse_product_page(self, response):        # yield product item here

引擎开始将请求发送到url中,

start_urls
并执行默认的回调(
parse()
CrawlSpider中的方法)以响应它们。

对于每个响应,

parse()
方法将在其上执行链接提取程序,以从页面获取链接。即,它
linkExtractor.extract_links(response)
为每个响应对象调用以获得URL,然后产生
scrapy.Request(url, <rule_callback>)
对象。

该示例代码是spider的框架,该spider在产品类别和子类别的链接之后爬网电子商务网站,以获取每个产品页面的链接。

对于专门在此spider中注册的规则,它将使用

parse()
回调方法对“类别”和“子类别”列表内的链接进行爬网(这将触发针对这些页面的抓取规则),以及与
product.php?id=d+
带有回调的正则表达式
parse_product_page()
-最终将抓取产品数据。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/376251.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号