Python2.7。访问 HTTPS 网站并检索内容 [重复]

Posted

技术标签:

【中文标题】Python2.7。访问 HTTPS 网站并检索内容 [重复]【英文标题】:Python2.7. Access an HTTPS Website and retrieve content [duplicate] 【发布时间】:2018-11-26 14:42:57 【问题描述】:

大家早上好,

我一直在尝试通过 HTTPS 的 Python 2.7 访问网站,但无法访问其内容,并且几天的研究也没有帮助。 网址是:https://www.cioh.org.co/。在 Python 中,我希望能够访问页面并检索所有 html 内容。过去,我会使用 ssl 模块并在顶部添加以下代码行:

导入 ssl ssl._create_default_https_context = ssl._create_unverified_context

这一次,这不起作用,我收到错误:SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] 证书验证失败 (_ssl.c:661) 将 requests 模块与 requests.get('https://www.cioh.org.co/') 一起使用时

来自某些网站,一些人指出要使用: 导入请求 r = requests.get(URL,验证=假) 打印 r.text

我也尝试过,但它实际上并没有抓取内容。它只是从网站中检索内部标题信息,如下所示:

<html>

<head>

<META NAME="robots" CONTENT="noindex,nofollow">

<script src="/_Incapsula_Resource?SWJIYLWA=5074a744e2e3d891814e9a2dace20bd4,719d34d31c8e3a6e6fffd425f7e032f3">

</script>

<body>

</body></html>

打印的回复与网站完全不同。通过无数的研究,我尝试使用 certifi 模块。我还安装了 OpenSSL 并提取了 .crt、.key 和 .pem 文件(并尝试使用它们),但仍然没有运气。如果需要,我可以扩展我所做的进一步研究。

如果使用任何浏览器都可以轻松访问该网站。任何帮助将不胜感激。

旁注:这是我第一次创建帐户并提出问题。如果我有什么不清楚的地方,请告诉我。提前致谢。

【问题讨论】:

这不是“内部标题”,实际上是整个 HTML 文档。然后,您的浏览器会执行链接后面的 javascript 代码;你在浏览器中看到的就是结果。这是一个常见问题解答。 【参考方案1】:

从响应中的Incapsula_Resource判断,您的请求被WAF阻止了。

您可以尝试更改 requests.get 调用中的用户代理字符串,使其看起来更像普通浏览器,但网站所有者显然不希望自动脚本抓取他们的页面。

【讨论】:

quora.com/…【参考方案2】:

显然你的代码必须以某种方式模仿浏览器,所以我认为你可以这样做:

from selenium import webdriver


def scrape_page(url):
    browser = webdriver.Firefox()
    browser.get(url)
    content = browser.page_source
    browser.close()
    return content


if __name__ == "__main__":
    print(scrape_page('https://www.cioh.org.co/'))

这个实现相当笨拙,但它确实有效,我希望你能明白。

要安装它,您必须安装 geckodriver,这是instructions 的链接。要安装 selenium,只需输入:pip3 install selenium

【讨论】:

我实际上熟悉使用 selenium 和 webdriver 做一些事情。使用您提供的代码让它工作(当然在引用 webdriver 的位置之后)。不幸的是,在我将使用代码的地方,webdriver .exe 文件与策略不合作,但是,我能够使用命令提示符(然后使用 python 中的 subprocess 模块)完成我想要的操作来抓取网页.感谢您的帮助!! @Darican 总是乐于提供帮助!

以上是关于Python2.7。访问 HTTPS 网站并检索内容 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Win7使用python2.7搭建Django网站

从公网通过HTTP/HTTPS访问本机localhost网站

Java获取访问者Ip并限制Ip访问页面

通过 PySide 使用 Python 2.7 检索笔压

在 Python 中使用 OpenCV 访问轮廓边界内的像素值

如何从测试用户那里检索 Facebook 照片?