【问题标题】:urllib.error.URLError: <urlopen error unknown url type: https>urllib.error.URLError: <urlopen 错误未知 url 类型:https>
【发布时间】:2019-07-22 09:50:27
【问题描述】:

您好,我正在尝试学习网络抓取。我在 Windows 10 中安装了 Anaconda3。Conda 版本 4.5.12。 Python 版本 3.7.1。

我编写了以下脚本,产生了上述错误。

import bs4
from bs4 import BeautifulSoup as soup
from urllib.request import urlopen as request
with request('https://google.com') as response:
    page_html = response.read()
page_soup = soup(page_html, "html.parser")
print(page_soup)

错误来自这一行:

with request('https://google.com') as response:
...
...
raise URLError('unknown url type: %s' % type)
urllib.error.URLError: <urlopen error unknown url type: https>

但是,当我打开我的 Anaconda 提示符并从上面的脚本逐行执行时,它可以完美运行。
谁能帮我理解出了什么问题?如何使脚本从控制台运行而不会出现此错误?

【问题讨论】:

    标签: python web-scraping anaconda urllib


    【解决方案1】:

    我通过重新安装 anaconda 库解决了这个问题。在安装过程中,我选择设置 PATH 变量,尽管不推荐。 (所以我第一次没有设置 PATH )所以,基本上我忽略了这个建议。之后它起作用了。我不知道第一次出现问题的确切原因。但现在它正在工作。

    【讨论】:

      【解决方案2】:

      我在安装带有推荐设置的 Anaconda 的 emsdk 时遇到了类似的问题。

      我是这样解决的:

      打开 Anaconda Navigator > 单击 Environments > 选择 base(root) > 单击播放图标 > 选择打开终端 > 导航到脚本文件夹 > 运行脚本

      【讨论】:

        【解决方案3】:

        也许这行得通,

        response= request('https://google.com')
        page_html = response.read() if response else ""
        page_soup = soup(page_html, "html.parser")
        print(page_soup)
        

        【讨论】:

        • 感谢您的回复,但问题没有解决。
        【解决方案4】:
        import ssl
        ssl._create_default_https_context = ssl._create_unverified_context
        

        这是允许未经验证的 SSL 的方式

        【讨论】:

        • 感谢您的回复,但这会引发另一个错误“import _ssl # 如果我们无法导入它,让错误传播 ImportError: DLL load failed: The specified module could not be found.”是错误信息
        【解决方案5】:

        试试下面的代码:

        import bs4
        from bs4 import BeautifulSoup as soup
        from urllib.request import urlopen, Request
        response = urlopen('https://www.google.com')
        page_html = response.read()
        page_soup = soup(page_html, "html.parser")
        print(page_soup)
        

        【讨论】:

        • 感谢您的回复。我通过重新安装并选择了 set Path 使其工作,尽管在 anaconda 安装过程中不建议这样做。然后相同的代码就可以正常工作了。
        猜你喜欢
        • 2015-01-22
        • 2015-04-07
        • 2018-12-04
        • 2020-10-15
        • 2012-12-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多