Scrapy:为每个start_url动态生成规则

马克·创世纪·罗曼蒂格

我创建了一个蜘蛛,该蜘蛛应该可以爬网多个网站,并且需要为start_url列表中的每个URL定义不同的规则。

start_urls = [
    "http://URL1.com/foo"
    "http://URL2.com/bar"
]

rules = [
    Rule (LinkExtractor(restrict_xpaths=("//" + xpathString+"/a")), callback="parse_object", follow=True)
]

规则中唯一需要更改的是limit_xpath的xpath字符串。我已经想出了一个可以从任何网站动态获取我想要的xpath的功能。我以为我可以获取蜘蛛将要抓取的当前URL并将其传递给函数,然后将生成的xpath传递给规则。

不幸的是,我一直在搜索,似乎这是不可能的,因为scrapy利用调度程序并从一开始就编译了所有的start_urls和规则。有什么解决方法可以实现我的目标?

保罗·特姆布雷斯

我认为您正在使用CrawlSpider默认情况下,CrawlSpider rules适用于您的Spider抓取的所有页面(无论哪个域)。

如果您要在起始URL中抓取多个域,并且希望为每个域使用不同的规则,则将无法告诉scrapy哪些规则适用于哪个域。(我的意思是,开箱即用)

您可以一次使用1个起始URL(以及特定于域的规则,在初始化时动态构建)来运行您的Spider。并在平行运行多个蜘蛛。

另一个选择是CrawlSpider根据您的需要对它进行子类化和自定义:

  • rules使用域作为键将其作为dict进行构建,而值则是要应用于该域的规则列表。参见_compile_rules方法。
  • 并根据响应域应用不同的规则。_requests_to_follow

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Scrapy Pipeline 为每个 start_url 更新 mysql

来自分类Dev

根据(动作a)的内容动态生成规则

来自分类Dev

根据(动作a)的内容动态生成规则

来自分类Dev

Scrapy:存储/删除当前的start_url?

来自分类Dev

Scrapy:存储/删除当前的start_url?

来自分类Dev

python scrapy spider:在每个start_url的parse()方法中传递其他信息

来自分类Dev

为PostCSS中的所有直接后代生成规则

来自分类Dev

每个start_url已刮取多少个项目

来自分类Dev

每个start_url已刮取多少个项目

来自分类Dev

基于特定时区生成规则

来自分类Dev

通过计算start_url调用次数来估算Scrapy进度

来自分类Dev

无法从 Scrapy Spider 导出数据,start_url 未定义

来自分类Dev

如何在julia中生成规则的非整数序列?

来自分类Dev

生成规则30元胞自动机的行

来自分类Dev

使用生成规则调用另一个

来自分类Dev

无法使用 Apriori 算法生成规则列表

来自分类Dev

如何动态设置Scrapy规则?

来自分类Dev

zsh:ssh的完成规则

来自分类Dev

PyParsinig为什么不将生成规则名称存储在AST中?

来自分类Dev

自定义生成规则转换为VS2013后失败

来自分类Dev

自定义生成规则未针对Xcode 6.3执行

来自分类Dev

foreach中的条件变量(ifeq)用于显式生成规则

来自分类Dev

Drools:使用PackageDescr生成规则时如何为变量赋值?

来自分类Dev

针对不同目录中的多个输出文件的单个生成规则

来自分类Dev

如何在python scrapy中为不同的start_urls应用不同的规则?

来自分类Dev

如何在python scrapy中为不同的start_urls应用不同的规则?

来自分类Dev

表单生成后,jQuery验证会为每个输入动态添加规则

来自分类Dev

表单生成后,jQuery验证会为每个输入动态添加规则

来自分类Dev

Web App清单:start_url中的哈希

Related 相关文章

  1. 1

    Scrapy Pipeline 为每个 start_url 更新 mysql

  2. 2

    根据(动作a)的内容动态生成规则

  3. 3

    根据(动作a)的内容动态生成规则

  4. 4

    Scrapy:存储/删除当前的start_url?

  5. 5

    Scrapy:存储/删除当前的start_url?

  6. 6

    python scrapy spider:在每个start_url的parse()方法中传递其他信息

  7. 7

    为PostCSS中的所有直接后代生成规则

  8. 8

    每个start_url已刮取多少个项目

  9. 9

    每个start_url已刮取多少个项目

  10. 10

    基于特定时区生成规则

  11. 11

    通过计算start_url调用次数来估算Scrapy进度

  12. 12

    无法从 Scrapy Spider 导出数据,start_url 未定义

  13. 13

    如何在julia中生成规则的非整数序列?

  14. 14

    生成规则30元胞自动机的行

  15. 15

    使用生成规则调用另一个

  16. 16

    无法使用 Apriori 算法生成规则列表

  17. 17

    如何动态设置Scrapy规则?

  18. 18

    zsh:ssh的完成规则

  19. 19

    PyParsinig为什么不将生成规则名称存储在AST中?

  20. 20

    自定义生成规则转换为VS2013后失败

  21. 21

    自定义生成规则未针对Xcode 6.3执行

  22. 22

    foreach中的条件变量(ifeq)用于显式生成规则

  23. 23

    Drools:使用PackageDescr生成规则时如何为变量赋值?

  24. 24

    针对不同目录中的多个输出文件的单个生成规则

  25. 25

    如何在python scrapy中为不同的start_urls应用不同的规则?

  26. 26

    如何在python scrapy中为不同的start_urls应用不同的规则?

  27. 27

    表单生成后,jQuery验证会为每个输入动态添加规则

  28. 28

    表单生成后,jQuery验证会为每个输入动态添加规则

  29. 29

    Web App清单:start_url中的哈希

热门标签

归档