当前位置: 首页 > 知识库问答 >
问题:

Python 3:请求模块-如何中断会话并继续?

金健
2023-03-14

我正在写一个网页抓取程序,我面临着以下问题。当我的URL是*. doc或*. jpg等时,我的当前请求不会超时,也不会传递到下一个URL。

例如:

html = requests.get("http//:www.someweb.com/abcd.doc", verify=False, timeout=5)

你能帮我获取()url吗?但有些url需要10秒钟,然后转到下一个吗??

我还尝试了eventled:

import eventlet
eventlet.monkey_patch()
with eventlet.Timeout(10):
    html = requests.get(enlance, verify=False)

我收到了如下一系列错误:

Traceback(最近一次调用): File"emailCrawler.py", line 69, in getLink(")File"emailCrawler.py", line 64, in getLink getLink(page)File"emailCrawler.py", line 64, in getLink getLink(page))文件"emailCrawler.py",第64行,在getLink getLink(page)文件"emailCrawler.py",第64行,在getLink getLink(page)文件"emailCrawler.py",第64行,在getLink getLink(page)文件"emailCrawler.py",第25行,在getLink html=requests.get(enlance,验证=False)File"/home/ccnp/环境/my_env/lib/python3.5/site-包/请求/api.py",第72行,在get返回请求('get',url,params=params,**kwargs)File"/home/ccnp/环境/my_env/lib/python3.5/site-包/请求/api.py",第58行,在请求返回session.request(method=method,url=url,**kwargs)File"/home/ccnp/环境/my_env/lib/python3.5/site-包/请求/sessions.py",第508行,在请求resp=self.send(prep,**send_kwargs)File"/home/ccnp/环境/my_env/lib/python3.5/site-包/请求/sessions.py",第618行,在发送r=adapter.send(请求,**kwargs)File"/home/ccnp/环境/my_env/lib/python3.5/site-包/请求/adapters.py",第440行,在发送超时=超时File"/home/ccnp/环境/my_env/lib/python3.5/site-包/urllib3/connectionpool.py",第601行,在urlopenchunked=chunked)File"/home/ccnp/环境/my_env/lib/python3.5/site-pack/urllib3/connectionpool.py",第357行,_make_requestconn.request(方法,url,**httplib_request_kw)File"/usr/lib/python3.5/超文本传输协议/client.py",第1107行,请求自._send_request(方法,url,正文,标头)文件"/usr/lib/python3.5/超文本传输协议/客户端. py",第1152行,在_send_request. endHeaders(正文)文件"/usr/lib/python3.5/超文本传输协议/客户端. py",第1103行,在endHeaders自身。_send_output(message_body)文件"/usr/lib/python3.5/超文本传输协议/客户端. py",第934行,在_send_output自己。发送(msg)文件"/usr/lib/python3.5/超文本传输协议/客户端。py",第877行,在发送自我。连接()文件"/home/ccnp/环境/my_env/lib/python3.5/site-包/urllib3/连接。py",第166行,在连接康恩=自。_new_conn()文件"/home/ccnp/environments/my_env/lib/python3.5/site-packages/urllib3/connection.py",第141行,在_new_conn(自己. host,自己. port),自己. timeout,**extra_kw)File"/home/ccnp/环境/my_env/lib/python3.5/site-包/urllib3/util/连接. py",第73行,在create_connection插槽.连接(sa)File"/home/ccnp/环境/my_env/lib/python3.5/site-包/eventlet/Greenio/base. py",第247行,在连接自_trampoline(fd,写=True)File"/home/ccnp/环境/my_env/lib/python3.5/site-包/eventlet/Greenio/base. py",第207行,在_trampolinemark_as_closed=自己。_mark_as_closed)File"/home/ccnp/环境/my_env/lib/python3.5/site-包/eventlet/hubs/init.py",第163行,在trampoline中返回hub. Switch()File"/home/ccnp/环境/my_env/lib/python3.5/site-包/eventlet/hubs/hub. py",第295行,在Switch中返回自己。超时: 10秒

共有1个答案

邹祺然
2023-03-14

我想我已经找到解决办法了

而不是eventlet请求我eventlet美化组如下

try:
    html = requests.get(enlance, verify=False, timeout=5)

except Exception as e:
    print(e)
else:
    with eventlet.Timeout(5):
        bsObj = BeautifulSoup(html.text, "html.parser", from_encoding="iso-8859-1")
 类似资料:
  • 问题内容: 我试图用来刮擦需要通过登录的网站。然后,一旦我登录,便可以通过访问一个单独的网页。 第一个问题,现在被登录。我试图使用到的登录信息,但我得到的回应没有出现在被记录。 在这里,我只是转发我返回的页面,但是返回的页面仍显示登录表单,如果尝试访问另一个页面,则表示我尚未登录。 我认为我需要维护客户端会话和cookie数据,但是找不到任何资源可以帮助我了解如何做到这一点。 作为后续,我最终使用

  • 当我的请求出现在我的控制器上,executorService创建一个线程池并创建一些线程来执行某些逻辑时,我的请求返回到Browser。我的问题从这里开始,运行在服务器端的线程需要session对象,线程得到的session为null。下面是代码,请给出一些合适的解决方案,这样我就可以在请求完成后得到会话值。 @RequestMapping(值=“/expandAllController”,方法=

  • 本文向大家介绍如何中断axios的请求?相关面试题,主要包含被问及如何中断axios的请求?时的应答技巧和注意事项,需要的朋友参考一下 <button onclick="test()">click me</button> <script src="https://unpkg.com/axios@0.18.0/dist/axios.js"&gt;&lt;/script> <script> const

  • 我正在编写一个处理多个系统的应用程序。用户可以选择他想使用的系统,我将该系统ID存储在会话(客户端会话)中 现在我有了服务类,比如说CustomerService。 我想使用 Guice 将客户实例注入控制器。但是我想使用存储在会话中的系统ID实例化客户服务。 如何访问<code>请求。Guice模块中的会话? 编辑: 简化了我上面的代码。我的实际代码使用接口。我如何使用辅助注射? 这给了我:客户

  • 似乎有很多不同的方法可以做到这一点,但我试图只使用sinon,sinon-test,chai/mocha,axios,httpmock模块。我无法成功模拟使用axios进行的GET调用。我希望能够模拟来自axios调用的响应,这样单元测试实际上就不必发出外部API请求。 我尝试过通过创建沙箱来建立一个基本的单元测试,并使用sinon stub来建立一个GET调用并指定预期的响应。我不熟悉JavaS

  • 问题内容: 我知道上面的脚本不起作用。因此,如果需要将带有break的函数或继续放入循环,该如何写? 问题答案: 一个函数不能导致中断或继续调用它的代码。中断/继续实际上必须出现在循环内。您的选择是: 从funcA返回一个值并使用它来决定是否中断 在funcA中引发异常并将其捕获在调用代码中(或调用链中更高的位置) 写一个生成器来封装中断逻辑,然后在生成器上进行迭代 通过#3我的意思是这样的: 这