Python使用asyncio+aiohttp异步爬取 的问题
本帖最后由 wolaileo 于 2019-11-18 00:21 编辑最近遇上了一个问题,
在使用asyncio+aiohttp异步爬取 网页内容时,
有些链接爬取不到内容,
如图
对于爬取失败的网页如何继续爬取呢?
我已经控制了访问量了,依然如何
sem = asyncio.Semaphore(3) # 信号量,控制协程数,防止爬的过快
请各位指点指点
补充
··································
def main_get_html():
loop = asyncio.get_event_loop() # 获取事件循环
tasks = # 把所有任务放到一个列表中
loop.run_until_complete(asyncio.wait(tasks)) # 激活协程
url_lst_unrequested = []
for url in urlss:
if url not in url_lst_successed or url_lst_failed:
url_lst_unrequested.append(url)
while len(url_lst_unrequested) > 0:
tasks_unrequested =
loop.run_until_complete(asyncio.wait(tasks_unrequested))
url_lst_unrequested = []
for url in urlss:
if url not in url_lst_successed:
url_lst_unrequested.append(url)
loop.close()# 关闭事件循环
提示错误
Traceback (most recent call last):
File "G:\python\he.py", line 107, in <module>
main_get_html()
File "G:\python\he.py", line 89, in main_get_html
for url in urlss:
TypeError: 'function' object is not iterable
对于异常或 timeout 的访问,希望自动尝试,最多尝试三次 判断爬下来的data尺寸是不是合适,关键字进行匹配// swjtu_ray 发表于 2019-11-16 22:48
判断爬下来的data尺寸是不是合适,关键字进行匹配//
感觉 通过 判断 页面是否为200 还好些吧? 代码不贴出来鬼知道你怎么写的有什么问题
wolaileo 发表于 2019-11-16 23:20
感觉 通过 判断 页面是否为200 还好些吧?
你都知道还问个锤子== 本帖最后由 wolaileo 于 2019-11-16 23:53 编辑
swjtu_ray 发表于 2019-11-16 23:40
你都知道还问个锤子==
是因为我 搞不明白要如何写。。。想得到,因水平问题写不出来,哎 神一样了 发表于 2019-11-16 23:38
代码不贴出来鬼知道你怎么写的有什么问题
刚才 我在百度,有人说异步 是会丢失链接的。。搞不明白了 wolaileo 发表于 2019-11-16 23:52
是因为我 搞不明白要如何写。。。想得到,因水平问题写不出来,哎
不太了解你是怎么实现的;
按照我的理解,可以判断爬取失败的,再加到爬取队列里面呀,重新爬;
可以再记录一下失败的访问列表,超过最大次数的就不再重新爬了 扯淡,丢个精度都没人敢用 这东西又不是玄学
页:
[1]
2