V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  zhijiansha  ›  全部回复第 15 页 / 共 22 页
回复总数  427
1 ... 7  8  9  10  11  12  13  14  15  16 ... 22  
2018-11-11 10:18:37 +08:00
回复了 moxiaowei 创建的主题 Python scrapy 的请求问题
写个中间件
ig 牛批
2018-10-29 12:32:55 +08:00
回复了 zhijiansha 创建的主题 Python 尝试用 aiohttp 写爬虫,但这么写不知道该怎么停止循环?
@binux 嗯嗯,删除操作是在 fetch 方法里面执行的
2018-10-29 11:37:33 +08:00
回复了 zhijiansha 创建的主题 Python 尝试用 aiohttp 写爬虫,但这么写不知道该怎么停止循环?
```
async def worker(self):
"""
任务调度
:return:
"""
while True:
if not self.queue.empty():
next_data = await self.queue.get()
task_id = uuid.uuid1()
self.task_running_list.append(task_id)
if isinstance(next_data, Item):
asyncio.create_task(self.set_item(task_id, next_data.info))
else:
asyncio.create_task(self.fetch(task_id, next_data.info))
self.queue.task_done()
else:
await asyncio.sleep(0)
if self.queue.empty() and not self.task_running_list:
break
```
根据 @binux 的提示,这么处理可解决该问题。
一样可以 xpath 取到的
2018-10-26 23:05:16 +08:00
回复了 zhijiansha 创建的主题 Python 尝试用 aiohttp 写爬虫,但这么写不知道该怎么停止循环?
@Yourshell #9 谢回复!代码中是在 while 中从队列获取任务直接注册到事件循环,然后就执行了 task_done。这么如果用 join 去判断的话应该也是一样的,我尝试用链接中的例子去改写上面的爬虫代码,但是好像也是行不通,会一直阻塞。不知何故。

@binux #10 谢回复!判断任务状态,在官方文档中找到了 all_tasks 和 current_task 这两个方法,但是好像不好使,即使任务全部完成也不为 None,导致判断失败。。
2018-10-26 10:22:17 +08:00
回复了 zhijiansha 创建的主题 Python 尝试用 aiohttp 写爬虫,但这么写不知道该怎么停止循环?
@binux 请教一下这个标记的动作应该放在哪里执行??
@so1n 替换后无法执行。。。

@Yourshell 呃,判断队列为空不是 empty 么?
2018-10-26 00:03:33 +08:00
回复了 zhijiansha 创建的主题 Python 尝试用 aiohttp 写爬虫,但这么写不知道该怎么停止循环?
@AlisaDestiny 但爬取何时完成,无法预料,也就无法给设置为 False 啊
2018-10-25 21:07:43 +08:00
回复了 zhijiansha 创建的主题 Python 尝试用 aiohttp 写爬虫,但这么写不知道该怎么停止循环?
@jimmyczm 感觉用 redis 应该也会有这个问题。。。除非是标记一下任务状态
1 ... 7  8  9  10  11  12  13  14  15  16 ... 22  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2255 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 23ms · UTC 15:56 · PVG 23:56 · LAX 07:56 · JFK 10:56
Developed with CodeLauncher
♥ Do have faith in what you're doing.