scrapy获取a标签的连接_Scrapy爬虫之CrawlSpider

本文介绍了CrawlSpider在Scrapy中的应用,它通过Rule来简化多级链接的爬取。CrawlSpider的Rule包含了LinkExtractor和回调函数,用于指定页面提取和跟进策略。示例中,CrawlSpider用于爬取五和附近房源的title、地址和URL,演示了如何设置restrict_xpaths和allow来定位目标内容,并通过不同的follow设置控制爬取深度。
摘要由CSDN通过智能技术生成

不点蓝字,我们哪来故事?


 01 

引言

本篇文章我们来说说CrawlSpider。通过 Scrapy,我们可以轻松地完成一个站点爬虫的编写。但如果抓取的站点量非常大,假设爬取多个站点下多级链接下的内容,Spider 会显的力不从心。如果用Spider继续爬取深度网址需要使用xpath或css selector去解析response中想要继续爬取的网址,再用Scrapy.Request发送请求,得到的Response使用Request中指定的callback函数去解析。

这无疑增加了代码的复杂度,那么,有什么更简单的方法呢?接下来我们来看看CrawlSpider。


 02 

CrawlSpider

CrawlSpider 是 Scrapy 提供的一个通用 Spider。在 Spider 里,我们可以指定一些爬取规则来实现页面的提取,这些爬取规则由一个专门的数据结构 Rule 表示。Rule 里包含提取和跟进页面的配置,Spider 会根据 Rule 来确定当前页面中的哪些链接需要继续爬取、哪些页面的爬取结果需要用哪个方法解析等。CrawlSpider 继承自 Spider 类。除了 Spider 类的所有方法和属性,它还提供了一些非常重要的属性和方法。

下面以某家五和附近的房源进行说明。

新建一个Scrapy项目

scrapy startproject scrapy_test

创建一个 CrawlSpider,需要先制定一个模板。在这之前我们可以先看看有哪些可用模板:

scrapy genspider -l# 输出Available templates:  basic  crawl  csvfeed  xmlfeed

之前文章创建 Spider 的时候,默认使用了第一个模板 basic。这次我们要创建 CrawlSpider,选择使用第二个模板 crawl。

scrapy genspider -t crawl testing sz.lianjia.com

运行之后会生成一个 CrawlSpider,内容代码如下所示:

from scrapy.linkextractors import LinkExtractorfrom scrapy.spiders import CrawlSpider, Ruleclass TestingSpider(CrawlSpider):    name = 'testing'    allowed_domains = ['sz.lianjia.com']    start_urls = ['https://sz.lianjia.com/zufang/rs%E4%BA%94%E5%92%8C/']    rules = (        Rule(LinkExtractor(allow=r'Items/'), callback=
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值