小编ani*_*etd的帖子

在满足管道中的条件后,如何立即停止所有蜘蛛和引擎?

我们有一个用scrapy编写的系统来抓取一些网站.有几个蜘蛛,以及所有爬虫传递的所有物品的一些级联管道.其中一个管道组件向Google服务器查询地理编码地址.谷歌每个IP地址每天限制2500个请求,并且如果谷歌继续查询谷歌,即使谷歌已经回复了警告信息:'OVER_QUERY_LIMIT',也有可能禁止IP地址.

因此,我想知道我可以在管道中调用的任何机制,它将完全并立即停止所有进一步爬行/处理所有蜘蛛以及主引擎.

我检查了其他类似的问题,他们的答案没有奏效:

from scrapy.project import crawler
crawler._signal_shutdown(9,0) #Run this if the cnxn fails.
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为蜘蛛停止执行需要时间,因此谷歌提出了更多的请求(可能会禁止我的IP地址)

import sys
sys.exit("SHUT DOWN EVERYTHING!")
Run Code Online (Sandbox Code Playgroud)

这个根本不起作用; 项目不断生成并传递给管道,虽然日志呕吐sys.exit() - > exceptions.SystemExit引发(无效)

crawler.engine.close_spider(self, 'log message')
Run Code Online (Sandbox Code Playgroud)

这个问题与上面提到的第一种情况有同样的问题.

我试过了:

scrapy.project.crawler.engine.stop()
Run Code Online (Sandbox Code Playgroud)

无济于事

编辑:如果我在管道中:

来自scrapy.contrib.closespider导入CloseSpider

我应该将什么作为'crawler'参数从我的管道范围传递给CloseSpider的init()?

python web-crawler scrapy

12
推荐指数
1
解决办法
6615
查看次数

在mac os x 10.6.7上卸载python 3.2

根据python.org的文档,在mac os上安装python 3.2需要升级到tcl/tk 8.5.9(使用IDLE).我急忙,我做了两件事.现在我的朋友告诉我,不推荐使用python 3,因为只有内置版本和一些模块已经发布了3.目前稳定的版本是2.7(特别是如果想要广泛使用各种模块) .我的机器同时具有2.6.1和3.2(因为某些OS服务使用2.6.1作为操作系统的默认值).

1.如何完全删除3.2以避免任何兼容性问题?

还安装了tcl/tk 8.5.9,这不是默认值.安装过程中没有详细模式,所以我不知道它是否替换了默认模式.如果它对操作系统有多糟糕?因此

2.如果以上情况真的很糟糕,我如何降级到旧版本的tcl/tk?

简而言之,我如何将我的机器恢复到原始状态?如果有人知道目录和文件的所有路径,我可以手动完成.

谢谢

macos uninstall python-3.2

10
推荐指数
1
解决办法
2万
查看次数

python set.remove行为和其他内置函数

在Python 2.7.x中

In [21]: s = set([-1, -1, -1, 0, -1, 0, 0, 0, 0]).remove(-1)

In [22]: type(s)
Out[22]: NoneType
Run Code Online (Sandbox Code Playgroud)

In [23]: s = set([-1, -1, -1, 0, -1, 0, 0, 0, 0])

In [24]: type(s)
Out[24]: set

In [25]: s.remove(-1)

In [26]: type(s)
Out[26]: set

In [27]: s
Out[27]: set([0])
Run Code Online (Sandbox Code Playgroud)

为什么函数链在上面的例子中不能按预期工作?

python set

1
推荐指数
1
解决办法
76
查看次数

如何在python中的代码点上拆分unicode字符串?(例如,\ u00B7或\ u2022)?

我尝试了一切我能想到的......

1. unicode_obj.split('\u2022')
2. re.split(r'\u2022', unicode_object)
3. re.split(r'(?iu)\u2022', unicode_object)
Run Code Online (Sandbox Code Playgroud)

没有任何效果

问题是我想拆分特殊字符.

example string : u'<special char like middot:\u00b7 or bullet:\u2022> sdfhsdf <repeat special char> sdfjhdgndujhfsgkljng <repeat special char> ... etc'
Run Code Online (Sandbox Code Playgroud)

请帮忙.

提前致谢.

python unicode split codepoint points

0
推荐指数
1
解决办法
1809
查看次数

标签 统计

python ×3

codepoint ×1

macos ×1

points ×1

python-3.2 ×1

scrapy ×1

set ×1

split ×1

unicode ×1

uninstall ×1

web-crawler ×1