通过下面的命令可以快速创建 CrawlSpider模板 的代码:

scrapy genspider -t crawl spidername xx.com

LinkExtractors

class scrapy.linkextractors.LinkExtractor

Link Extractors 的目的很简单: 提取链接。

每个LinkExtractor有唯一的公共方法是 extract_links(),它接收一个 Response 对象,并返回一个 scrapy.link.Link 对象。

Link Extractors要实例化一次,并且 extract_links 方法会根据不同的 response 调用多次提取链接。

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:满足括号中“正则表达式”的值会被提取,如果为空,则全部匹配。

  • deny:与这个正则表达式(或正则表达式列表)不匹配的URL一定不提取。

  • allow_domains:会被提取的链接的domains。

  • deny_domains:一定不会被提取链接的domains。

  • restrict_xpaths:使用xpath表达式,和allow共同作用过滤链接。

  • rules

    在rules中包含一个或多个Rule对象,每个Rule对爬取网站的动作定义了特定操作。如果多个rule匹配了相同的链接,则根据规则在本集合中被定义的顺序,第一个会被使用。


    class scrapy.spiders.Rule(
    link_extractor,
    callback = None,
    cb_kwargs = None,
    follow = None,
    process_links = None,
    process_request = None
    )
    • link_extractor:是一个Link Extractor对象,用于定义需要提取的链接。

    • callback: 从link_extractor中每获取到链接时,参数所指定的值作为回调函数,该回调函数接受一个response作为其第一个参数。

      注意:当编写爬虫规则时,避免使用parse作为回调函数。由于CrawlSpider使用parse方法来实现其逻辑,如果覆盖了 parse方法,crawl spider将会运行失败。

    • follow:是一个布尔(boolean)值,指定了根据该规则从response提取的链接是否需要跟进。 如果callback为None,follow 默认设置为True ,否则默认为False。

    • process_links:指定该spider中哪个的函数将会被调用,从link_extractor中获取到链接列表时将会调用该函数。该方法主要用来过滤。

    • process_request:指定该spider中哪个的函数将会被调用, 该规则提取到每个request时都会调用该函数。 (用来过滤request)

最新文章

  1. 十DHT11
  2. Lock VS Monitor
  3. Open Credit System
  4. centos7 最小化安装 无 ifconfig,netstat 的安装
  5. POJ 3264 Balanced Lineup 线段树 第三题
  6. Why we made vorlon.js and how to use it to debug your JavaScript remotely
  7. MYSQL分页limit速度太慢优化方法
  8. mybatis中怎样使用having?
  9. cf1051d 简单的状态压缩dp
  10. 以英雄联盟的方式建模,谈对依赖注入(DI)的理解以及Autofac的用法(一)
  11. 总结---Python中的面向对象!
  12. 【Linux】特殊符号$$,$#,$?等解释
  13. python 直接将list 整体转化-----------map()
  14. Redis(十四):主从复制
  15. 小白系列-免费广告路由器web认证设置(2)
  16. python的__init__和__new__
  17. input取值
  18. pig语法学习 FOREACH GENERATE group AS
  19. 使用phppgadmin 遇到的小问题
  20. rac_udev建立磁盘方式安装grid时不识别磁盘

热门文章

  1. WPF 绑定父类属性
  2. Kubernetes使用集群联邦实现多集群管理
  3. 工具:sql server profiler(分析器)
  4. WCF SOAP用法
  5. jquery通过索引获取元素
  6. socket上http协议应用(使用socket进行http通信的例子,准备好报头以后,简单read/write就可以了)
  7. 《芒果TV》UWP版利用Windows10通用平台特性,率先支持Xbox One平台
  8. duilib菜单开发遇见“0xC0000005: 读取位置 0xFFFFFFFFFFFFFFFF 时发生访问冲突”
  9. QToolBar也是QWidget,可以放在QWidget的中间
  10. 创业游戏模拟器 Startup 游戏试玩