我在使用Scrapy View时出现TypeError



我正试图使用scrapy view https://www.example.com(不是真正的链接,因为我的工作不允许我透露它。对不起。(来调试链接,但后来我遇到了这个错误。

2018-11-01 20:49:29 [twisted] CRITICAL: Unhandled error in Deferred:
2018-11-01 20:49:29 [twisted] CRITICAL:
Traceback (most recent call last):
File "d:kerjahitpython projectsmy_projectmy_project-envlibsite-packagestwistedinternetdefer.py", line 1386, in _inlineCallbacks
result = g.send(result)
File "d:kerjahitpython projectsmy_projectmy_project-envlibsite-packagesscrapycrawler.py", line 98, in crawl
six.reraise(*exc_info)
File "d:kerjahitpython projectsmy_projectmy_project-envlibsite-packagesscrapycrawler.py", line 79, in crawl
self.spider = self._create_spider(*args, **kwargs)
File "d:kerjahitpython projectsmy_projectmy_project-envlibsite-packagesscrapycrawler.py", line 102, in _create_spider
return self.spidercls.from_crawler(self, *args, **kwargs)
File "d:kerjahitpython projectsmy_projectmy_project-envlibsite-packagesscrapyspiders__init__.py", line 51, in from_crawler
spider = cls(*args, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'start_requests'
'page' is not recognized as an internal or external command,
operable program or batch file.

如何避免出现错误?

更新:

我在我的一个Scrapy项目中遇到了这个错误,但在使用我的另一个Scraby项目时没有遇到任何错误。这似乎是蜘蛛的一个问题。

1.

正如埃琳娜在回答中提到的,你给出的示例命令没有被引用。您需要正确处理&字符(通过引用命令或至少转义该字符(,才能将正确的URL作为参数传递给Scrapy。

虽然这是需要解决的问题,但我不认为这是您目前出现TypeError的原因。

2.

当处理像scrapy fetchscrapy view这样的命令时,Scrapy将需要初始化该任务的scrapy.Spider实例。

在这个过程中,Scrapy会在当前路径上查找scrapy.cfg文件,并且:

  • 案例A:如果有这样的文件,Scrapy会在当前工作路径上识别项目,并尝试在中加载现有的scrapy.Spider
  • 情况B:如果没有,这意味着没有可用的Scrapy项目,Scrapy只会初始化一个默认的scrapy.Spider实例

根据您共享的日志,这是您的案例A。

更重要的是,在处理scrapy fetch命令时,Scrapy会尝试通过spider参数覆盖start_requests属性(此处为相关代码(。根据你分享的日志,你的蜘蛛不接受这样的论点。

因此,您可以尝试以下任何方法:

  • 方案A:将工作目录更改到其他地方,那里没有Scrapy项目(例如cd /tmp/(。然后重试相同的scrapy fetch命令
  • 建议B:正确处理输入参数(下面的示例(,然后重试相同的scrapy fetch命令

在任何一种情况下,您都可能需要修复#1中提到的scrapy fetch命令。

3.

上述方案B的示例代码:

import scrapy

class TestSpider(scrapy.Spider):
name = 'test'
def __init__(self, argument_foo, argument_bar, *args, **kwargs):
super().__init__(*args, **kwargs)
# handle your argument "foo" and "bar" here
# e.g. self.xxx = int(argument_foo)

是否尝试使用引号?类似scrapy view "https://empireflippers.com/wp-admin/admin-ajax.php?action=ef_listings_paginated&page=1"

相关内容

  • 没有找到相关文章

最新更新