Scrapy框架:CrawlSpider和Scrapy Shell

CrawlSpider

在上一篇文章爬虫案例中,我们是自己在解析完整个页面后获取下一页的url,然后重新发送一个请求。有时候我们的需求是:只要满足某个条件的url,都进行爬取。这时候就可以通过CrawlSpider来完成了。

CrawlSpider继承自Spider,只不过是在之前的基础之上增加了新的功能,可以定义爬取的url的规则,以后scrapy碰到满足条件的url都进行爬取,而不用手动的yield Request。

创建CrawlSpider爬虫

之前创建爬虫的方式是通过scrapy genspider [爬虫名字] [域名]的方式创建的。如果想要创建CrawlSpider爬虫,应该通过以下命令scrapy genspider -t crawl [爬虫名字] [域名]创建

LinkExtractors链接提取器

使用LinkExtractors就不用程序员自己提取想要的url再发送请求。这些工作都可以交给LinkExtractors,它会在所有爬的页面中找到满足规则的url,实现自动的爬取。

以下对LinkExtractors类做一个简单的介绍:

class scrapy.linkextractors.LinkExtractor(
    allow = (),
    deny = (),
    allow_domains = (),
    deny_domains = (),
    deny_extensions = None,
    restrict_xpaths = (),
    tags = ('a','area'),
    attrs = ('href'),
    canonicalize = True,
    unique = True,
    process_value = None
)

主要参数讲解:

  • allow:允许的url。所有满足这个正则表达式的url都会被提取
  • deny:禁止的url。所有满足这个正则表达式的url都不会被提取
  • allow_domains:允许的域名。只有在这个里面指定的域名的url才会被提取
  • deny_domains:禁止的域名。所有在这个里面指定的域名的url都不会被提取
  • restrict_xpaths:严格的xpath。和allow共同过滤链接

Rule规则类

定义爬虫的规则类。

以下对这个类做一个简单的介绍:

class scrapy.spiders.Rule(
    link_extractor, 
    callback = None, 
    cb_kwargs = None, 
    follow = None, 
    process_links = None, 
    process_request = None
)

主要参数讲解:

  • link_extractor:一个LinkExtractor对象,用于定义爬取规则
  • callback:满足这个规则的url,应该要执行哪个回调函数。因为CrawlSpider使用了parse作为回调函数,因此不要覆盖parse作为回调函数(回调函数名字不要为parse)
  • follow:指定根据该规则从response中提取的链接是否需要跟进
  • process_links:从link_extractor中获取到链接后会传递给这个函数,用来过滤不需要爬取的链接

微信小程序社区CrawlSpider案例

https://blog.csdn.net/weixin_43040873/article/details/110391567


Scrapy Shell

我们想要在爬虫中使用xpath、beautifulsoup、正则表达式、css选择器等来提取想要的数据。但是因为scrapy是一个比较重的框架。每次运行起来都要等待一段时间。因此要去验证我们写的提取规则是否正确,是一个比较麻烦的事情。因此Scrapy提供了一个shell,用来方便的测试规则。当然也不仅仅局限于这一个功能。

打开Scrapy Shell:

打开cmd终端,进入到Scrapy项目所在的目录,然后进入到scrapy框架所在的虚拟环境中,输入命令scrapy shell [链接],就会进入到scrapy的shell环境中。在这个环境中,你可以跟在爬虫的parse方法中一样使用了。

在这里插入图片描述

  1. 可以方便我们做一些数据提取的测试代码
  2. 如果想要执行scrapy命令,那么毫无疑问,肯定是要先进入到scrapy所在的环境中
  3. 如果想要读取某个项目的配置信息,那么应该先进入到这个项目中,再执行scrapy shell 命令
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值