- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个从 redis 列表中获取 url 的蜘蛛。
当没有找到 url 时,我想很好地关闭蜘蛛。我尝试实现了CloseSpider
异常,但是好像没有到这一步
def start_requests(self):
while True:
item = json.loads(self.__pop_queue())
if not item:
raise CloseSpider("Closing spider because no more urls to crawl")
try:
yield scrapy.http.Request(item['product_url'], meta={'item': item})
except ValueError:
continue
即使我提出了 CloseSpider 异常,但我仍然收到以下错误:
root@355e42916706:/scrapper# scrapy crawl general -a country=my -a log=file
2017-07-17 12:05:13 [scrapy.core.engine] ERROR: Error while obtaining start requests
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/scrapy/core/engine.py", line 127, in _next_request
request = next(slot.start_requests)
File "/scrapper/scrapper/spiders/GeneralSpider.py", line 20, in start_requests
item = json.loads(self.__pop_queue())
File "/usr/local/lib/python2.7/json/__init__.py", line 339, in loads
return _default_decoder.decode(s)
File "/usr/local/lib/python2.7/json/decoder.py", line 364, in decode
obj, end = self.raw_decode(s, idx=_w(s, 0).end())
TypeError: expected string or buffer
此外,我还尝试在同一函数中捕获 TypeError,但它也不起作用。
有没有推荐的方法来处理这个问题
谢谢
最佳答案
您需要检查 self.__pop_queue()
在将其提供给 json.loads()
之前是否返回某些内容(或捕获 TypeError
调用它时),类似于:
def start_requests(self):
while True:
item = self.__pop_queue()
if not item:
raise CloseSpider("Closing spider because no more urls to crawl")
try:
item = json.loads(item)
yield scrapy.http.Request(item['product_url'], meta={'item': item})
except (ValueError, TypeError): # just in case the 'item' is not a string or buffer
continue
关于python - 如果没有可抓取的 URL,则 Scrapy 关闭蜘蛛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45143947/
我想使用这个过滤器从网站 http://www.quoka.de/immobilien/bueros-gewerbeflaechen 抓取数据: nur Angebote 如何使用scrapy设置这个
我正在研究制作网络爬虫/蜘蛛,但是我需要有人指出正确的方向才能上手。 基本上,我的Spider会搜索音频文件并将它们编入索引。 我只是想知道是否有人对我应该如何做有任何想法。我听说用PHP完成它会非常
如果 Nutch 页面已经在索引中,它们会再次索引它们吗?如果是这样,我该如何更改? 最佳答案 是和否。默认情况下,Nutch 只会在 1 个月的某个时间段(从内存中)重新索引页面,如果页面没有更改,
我在一个 Scrapy 项目中有两个蜘蛛。 Spider1 抓取页面列表或整个网站并分析内容。 Spider2 使用 Splash 获取 Google 上的 URL 并将该列表传递给 Spider1。
我正在使用 python scrapy 包。有没有办法在蜘蛛运行时更新 scrapy 蜘蛛设置?我尝试了 telnet 控制台并通过以下方式更新设置: settings.set('AUTOTHROTT
我正在尝试安装 Sphider 来搜索我的网站,当我尝试创建 MySQL 表时出现此错误: create table query_log ( query varchar(255), tim
正在关注 How to pass a user defined argument in scrapy spider ,我写了下面这个简单的蜘蛛: import scrapy class Funda1S
我正在开发一个简单的抓取工具来获取 9 个搞笑帖子及其图片,但由于一些技术困难,我无法停止抓取工具,它继续抓取,这是我不想要的。我想增加计数器值并在 100 个帖子后停止。但是 9gag 页面的设计方
我创建了一个 Scrapy 蜘蛛。但我想将它作为脚本运行。我该怎么做。现在我可以在终端中通过这个命令运行: $ scrapy crawl book -o book.json 但我想像运行一个简单的 p
我正在尝试构建一个系统来运行 a few dozen Scrapy spiders ,将结果保存到 S3,并在完成时通知我。 StackOverflow 上有几个类似的问题(例如 this one 和
我正在用 Python 编写蜘蛛来抓取网站。问题是,我需要检查大约 250 万页,所以我真的需要一些帮助来优化它的速度。 我需要做的是检查一定数量的页面,如果找到就记录该页面的链接。蜘蛛非常简单,它只
我需要创建一个用户可配置的网络蜘蛛/爬虫,我正在考虑使用 Scrapy。但是,我无法对域和允许的 URL regex:es 进行硬编码——这将在 GUI 中进行配置。 我如何(尽可能简单地)使用 Sc
我已经开始使用 Scrapy抓取一些网站。如果我稍后向我的模型添加一个新字段或更改我的解析函数,我希望能够离线“重放”下载的原始数据以再次抓取它。看起来 Scrapy 有能力在某一时刻将原始数据存储在
我的问题实际上是如何做与上一个问题相同的事情,但在 Scrapy 0.14 中。 Using one Scrapy spider for several websites 基本上,我有一个 GUI,它
我有一个关于 python (Python 2.7) IDE Spider (2.3.5.2) 的具体问题 今天我注意到我的脚本作为一个整体运行时有所不同,即当我按 F5 时。或者当我只运行一行或一个
我有一个 crontab 作业,运行一个 myautorun.sh 文件,其中包含 3 个蜘蛛: crontab -e 14 * * * * * ~bin/myautorun.sh myautorun
到目前为止,我的代码可以打开一个文本文件,将其处理成一个 pandas 数据文件,然后导出到 excel。 我正在与其他人共享此代码,我们在 Spyder 中都有相同的工作目录。所有代码都运行良好,我
最近想为Openstack添加自动登录功能。所以我为 openstack 编写了一个 python 蜘蛛,如下所示: import urllib import urllib2 import cooki
如何使用 PHP 检测爬虫/蜘蛛? 我目前正在做一个项目,我需要跟踪每个爬虫的访问。 我知道你应该使用 HTTP_USER_AGENT 但我不太确定如何为此目的格式化代码而且我知道可以很容易地更改 U
我已经使用 scrapy 编写了一个工作爬虫, 现在我想通过一个Django webapp来控制它,也就是说: 设置1个或多个start_urls 设置 1 个或多个 allowed_domains
我是一名优秀的程序员,十分优秀!