从命令行向废规则传递参数或动态修改规则

2024-09-30 08:35:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python编程新手,我很难让python爬行脚本工作。我需要你的提示来修理它。
实际上,我有一个正在工作的scrapy脚本,它在给定的url中爬行并提取链接。我想让它在任何动态给定的url上工作。所以我开始通过命令行向scray传递起始url和域,如下所示。在

scrapy crawl myCrawler -o test.json -t json -a allowedDomains="xxx" -a startUrls="xxx" -a allowedPaths="xxx"

但是,它不起作用。看起来规则没有从参数中获取值。由于我缺乏python技巧,我不知道如何修复这个问题。有人请帮帮我。在

下面是代码片段。在

^{pr2}$

Tags: 命令行test脚本jsonurl链接编程动态
1条回答
网友
1楼 · 发布于 2024-09-30 08:35:15

幸运的是它工作了,在How to dynamically set Scrapy rules?找到了答案

这是工作代码

class DmozSpider(CrawlSpider):

  name = "myCrawler"

   def __init__(self, allowedDomains='', startUrls='',allowedPaths='', *args, **kwargs):
       super(DmozSpider, self).__init__(*args, **kwargs)
       self.allowedDomains = allowedDomains
       self.startUrls = startUrls
       self.allowedPaths = allowedPaths
       self.allowed_domains = [allowedDomains]
       self.start_urls = [startUrls]
       DmozSpider.rules = (Rule(LinkExtractor(allow=(allowedPaths), allow_domains=allowedDomains), callback="parse_items",
                     follow=True),)
       super(DmozSpider, self)._compile_rules()

相关问题 更多 >

    热门问题