urlopen 未超时:不返回错误

Posted

技术标签:

【中文标题】urlopen 未超时:不返回错误【英文标题】:urlopen not timing out: no error is returned 【发布时间】:2021-10-16 08:21:27 【问题描述】:

我试图在我的爬虫中加载这个页面,但是每当我运行它时,终端永远不会完成运行。下一行永远不会出现,我什至无法停止运行该行。如果我想继续,我必须关闭整个终端并启动一个新终端。我不知道为什么会这样,考虑到相同的代码适用于我正在使用的大多数其他网站。有谁知道为什么会发生这种情况,或者我该如何解决?

from urllib.request import urlopen as uReq
    
uWF = uReq('https://advisor.morganstanley.com/one-hundred-square-group', timeout=10)
page_html = uWF.read()
uWF.close()

uReq 行是代码似乎卡住的部分。我在该行中加入了“timeout=10”,这样我就不必不断关闭和打开新的控制台。

【问题讨论】:

您可能在某处遇到网络问题。可能是ssl的结果。你有什么例外吗 不,我不这么认为。什么都没有回来。不过,您的意思并不完全肯定。 您是在使用容器还是在本地运行它? @Sherif 我只是在本地运行这个 【参考方案1】:

尝试使用requests 模块,但设置User-Agent HTTP 标头:

import requests

headers = 
    "User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:91.0) Gecko/20100101 Firefox/91.0"


print(
    requests.get(
        "https://advisor.morganstanley.com/one-hundred-square-group",
        headers=headers,
    ).text
)

打印:

<!doctype html><html lang="en"><head>
...

【讨论】:

以上是关于urlopen 未超时:不返回错误的主要内容,如果未能解决你的问题,请参考以下文章

Python urllib.request.urlopen() 返回错误 403

NameError:名称“urlopen”未定义

处理 urllib2 的超时? - Python

python socket 超时设置 errno10054

urllib2功能说明

使用 urlopen 出现“RemoteDisconnected”错误