首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python之CrawlSpider

CrawlSpider继承自scrapy.Spider CrawlSpider可以定义规则,再解析html内容的时候,可以根据链接规则提取出指定的链接,然后再向这些链接发送请求所以,如果有需要跟进链接的需求...,意思就是爬取了网页之后,需要提取链接再次爬取,使用CrawlSpider是非常合适的 提取链接 链接提取器,在这里就可以写规则提取指定链接 scrapy.linkextractors.LinkExtractor...( allow = (), # 正则表达式 提取符合正则的链接 deny = (), # (不用)正则表达式 不提取符合正则的链接 allow_domains = (), # (不用)允许的域名...() # 提取符合选择器规则的链接) 示例: 正则用法:links1 = LinkExtractor(allow=r'list_23_\d+\.html') xpath用法:links2 = LinkExtractor...read www.dushu.com ---- read.py import scrapy from scrapy.linkextractors import LinkExtractor from scrapy.spiders

39110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Scrapy框架的使用之Scrapy入门

    不过这个Class必须继承Scrapy提供的Spider类scrapy.Spider,还要定义Spider的名称和起始请求,以及怎样处理爬取后的结果的方法。 也可以使用命令行创建一个Spider。...= scrapy.Field() tags = scrapy.Field() 这里定义了三个字段,接下来爬取时我们会使用到这个Item。...所以,对于text,获取结果的第一个元素即可,所以使用extract_first()方法,对于tags,要获取所有结果组成的列表,所以使用extract()方法。...七、使用Item 上文定义了Item,接下来就要使用它了。Item可以理解为一个字典,不过在声明的时候需要实例化。然后依次用刚才解析的结果赋值Item的每一个字段,最后将Item返回即可。...不过如果想要更复杂的输出,如输出到数据库等,我们可以使用Item Pileline来完成。

    1.3K30

    Python爬虫之分布式爬虫

    搭建分布式机群,让其对一组资源进行分布式联合爬取 提升爬取效率 实现分布式: pip install scrapy-redis scrapy-redis 组件的作用: 给原生的scrapy框架提供可以被共享的管道和调度器...指定使用可以被共享的管道 ITEM_PIPELINES = { 'scrapy_redis.pipelines.RedisPipeline': 400} 指定调度器 增加一个去重容器类的配置...,使用redis的set集合来存储请求的指纹数据,从而实现请求去重的持久化 DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter' 使用scrapy_redis...redis的proName:items这个数据结构中 ---- 代码实现 sun2.py from scrapy.linkextractors import LinkExtractor from scrapy.spiders...,使用redis的set集合来存储请求的指纹数据,从而实现请求去重的持久化 DUPEFILTER_CLASS = 'scrapy_redis.dupefilter.RFPDupeFilter' # 使用

    46410

    爬虫系列(13)Scrapy 框架-CrawlSpider、图片管道以及下载中间件Middleware。

    ,用于定义需要提取的链接 - callback参数:当link_extractor获取到链接时参数所指定的值作为回调函数 - callback参数使用注意: 当编写爬虫规则时,请避免使用parse作为回调函数...extract_links(),它接收一个 Response 对象,并返回一个 scrapy.link.Link 对象 3.3 使用 class scrapy.linkextractors.LinkExtractor...提取当前网页中获得的链接 link = LinkExtractor(restrict_xpaths=(r'//div[@class="bottem"]/a[4]') 调用LinkExtractor实例的...使用图片管道 当使用 ImagesPipeline ,典型的工作流程如下所示: 在一个爬虫里,你抓取一个项目,把其中图片的URL放入 image_urls 组内 项目从爬虫内返回,进入项目管道 当项目进入...(item['img_urls'], meta={"item": item}) 因为scrapy里是使用它们URL的 SHA1 hash 作为文件名,所以如果想重命名: def file_path(self

    1.4K20

    Python爬虫之crawlspider类的使用

    scrapy的crawlspider爬虫 学习目标: 了解 crawlspider的作用 应用 crawlspider爬虫创建的方法 应用 crawlspider中rules的使用 ---- 1 crawlspider...中的allow对应的正则表达式匹配的是href属性的值 4 crawlspider使用的注意点: 除了用命令scrapy genspider -t crawl <allowed_domail...', 'baidu.com'] deny_domains: 不会被提取的链接的domains(url范围) restrict_xpaths: 使用xpath规则进行匹配,和allow共同过滤url,即xpath...url,且这个方法执行后才会执行callback指定的方法 总结 crawlspider的作用:crawlspider可以按照规则自动获取连接 crawlspider爬虫的创建:scrapy genspider...-t crawl tencent hr.tencent.com crawlspider中rules的使用: rules是一个元组或者是列表,包含的是Rule对象 Rule表示规则,其中包含LinkExtractor

    70010

    爬虫课堂(二十五)|使用CrawlSpider、LinkExtractors、Rule进行全站爬取

    在爬虫课堂(二十二)|使用LinkExtractor提取链接中讲解了LinkExtractor的使用,本章节来讲解使用CrawlSpider+LinkExtractor+Rule进行全站爬取。...Spider类的使用已经讲解了很多,但是如果想爬取某个网站的全站信息的话,CrawlSpider类是个非常不错的选择。...它除了继承过来的属性(name、allow_domains)外,还提供了新的属性和方法: 1.1、LinkExtractors class scrapy.linkextractors.LinkExtractor...关于Link Extractors如何使用可以参考爬虫课堂(二十二)|使用LinkExtractor提取链接这篇文章。...from scrapy.linkextractors import LinkExtractor from scrapy.spiders import CrawlSpider, Rule from tutorial.items

    1.3K70

    Scrapy 框架(二)数据的持久化

    今天小婷儿给大家分享的是Scrapy 框架(二)数据的持久化。...Scrapy 框架(二)数据的持久化 scrapy数据的持久化(将数据保存到数据库) 一、建立项目 1、scrapy startproject dushu 2、进入项目  cd dushu   执行:scrapy...3、模板CrawlSpider具有以下优点: 1)继承自scrapy.Spider; 2)CrawlSpider可以定义规则 在解析html内容的时候,可以根据链接规则提取出指定的链接,然后再向这些链接发送请求...; 所以,如果有需要跟进链接的需求,意思就是爬取了网页之后,需要提取链接再次爬取,使用CrawlSpider是非常合适的; 3)模拟使用: a: 正则用法:links1 = LinkExtractor(...allow=r'list_23_\d+\.html') b: xpath用法:links2 = LinkExtractor(restrict_xpaths=r'//div[@class="x"]') c

    44620

    普通爬虫有啥意思,我写了个通用Scrapy爬虫

    Spider的时候,默认使用的爬虫模板,也就是普通的爬虫模板;•crawl模板是最常用于抓取常规网站的爬虫模板,通过指定一些爬取规则来实现页面的提取,很多情况下这个模板的爬取就足够通用;•csvfeed...接下来我们主要是讲解最常用的爬虫模板——crawl模板,其他模板我们会在往后的文章里讲解,敬请期待!!! CrawlSpider 在使用crawl模板前,我们先要了解一下CrawlSpider。...,每个项目唯一的名字,用来区分不同的Spider,启动爬虫时使用scrapy crawl +该爬虫名字;•allowed_domains是允许爬取的域名,防止爬虫爬到其他网站;•start_urls是最开始爬取的...:会被提取的链接的domains;•deny_domains:不会被提取的链接的domains;•restrict_xpaths:使用xpath表达式来规则URL地址的范围。...get()方法来获取item配置信息,在使用eval()方法来获取返回get()中的值。

    1.1K10

    Scrapy框架的使用之Scrapy对接Selenium

    Scrapy抓取页面的方式和requests库类似,都是直接模拟HTTP请求,而Scrapy也不能抓取JavaScript动态渲染的页面。在前文中抓取JavaScript渲染的页面有两种方式。...一种是分析Ajax请求,找到其对应的接口抓取,Scrapy同样可以用此种方式抓取。...那么,如果Scrapy可以对接Selenium,那Scrapy就可以处理任何网站的抓取了。 一、本节目标 本节我们来看看Scrapy框架如何对接Selenium,以PhantomJS进行演示。...这就相当于从Request对象里获取请求链接,然后再用PhantomJS加载,而不再使用Scrapy里的Downloader。 随后的处理等待和翻页的方法在此不再赘述,和前文的原理完全相同。...为了不破坏其异步加载逻辑,我们可以使用Splash实现。下一节我们再来看看Scrapy对接Splash的方式。

    2.4K51
    领券