wolaileo 发表于 2019-11-16 22:19

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

wolaileo 发表于 2019-11-16 22:27

对于异常或 timeout 的访问,希望自动尝试,最多尝试三次

swjtu_ray 发表于 2019-11-16 22:48

判断爬下来的data尺寸是不是合适,关键字进行匹配//

wolaileo 发表于 2019-11-16 23:20

swjtu_ray 发表于 2019-11-16 22:48
判断爬下来的data尺寸是不是合适,关键字进行匹配//

感觉 通过 判断 页面是否为200 还好些吧?

神一样了 发表于 2019-11-16 23:38

代码不贴出来鬼知道你怎么写的有什么问题

swjtu_ray 发表于 2019-11-16 23:40

wolaileo 发表于 2019-11-16 23:20
感觉 通过 判断 页面是否为200 还好些吧?

你都知道还问个锤子==

wolaileo 发表于 2019-11-16 23:52

本帖最后由 wolaileo 于 2019-11-16 23:53 编辑

swjtu_ray 发表于 2019-11-16 23:40
你都知道还问个锤子==
是因为我 搞不明白要如何写。。。想得到,因水平问题写不出来,哎

wolaileo 发表于 2019-11-16 23:53

神一样了 发表于 2019-11-16 23:38
代码不贴出来鬼知道你怎么写的有什么问题

刚才 我在百度,有人说异步 是会丢失链接的。。搞不明白了

swjtu_ray 发表于 2019-11-17 00:02

wolaileo 发表于 2019-11-16 23:52
是因为我 搞不明白要如何写。。。想得到,因水平问题写不出来,哎

不太了解你是怎么实现的;
按照我的理解,可以判断爬取失败的,再加到爬取队列里面呀,重新爬;
可以再记录一下失败的访问列表,超过最大次数的就不再重新爬了

神一样了 发表于 2019-11-17 00:14

扯淡,丢个精度都没人敢用 这东西又不是玄学
页: [1] 2
查看完整版本: Python使用asyncio+aiohttp异步爬取 的问题