微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么我无法访问网站的完整响应代码?

如何解决为什么我无法访问网站的完整响应代码?

如果有空位,我想定期检查此 website,以便在空位时向我发出警告。没有来自 API 的客户端 HTML 请求 (XHR) 可供利用,因此,我决定抓取该网站,但是,我在从请求中得到的响应中看不到 HTML 代码的部分. 这是我感兴趣的网站部分:

enter image description here

然后,我提出了这个 get 请求,用 BS 来刮取它。

import requests
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML,like Gecko) Chrome/90.0.4430.212 Safari/537.36','From': 'kcanut@gmail.com'
}
url = 'https://service.berlin.de/terminvereinbarung/termin/day/'
cd = { 'sessionid': '123..'}
r = requests.get(url,headers=headers,cookies=cd)
r.content

但是,在响应中,该时间表中没有任何课程存在。有没有办法获得完整的 html 然后以某种方式它?

解决方法

您看不到这些表格的原因是它们不是静态网页的一部分。大多数现代网站通过客户端 javascript(在您打开页面时运行)而不是服务器端(在将 html 发送到浏览器之前运行)加载其内容。这意味着当您通过请求库获取请求时,您只会获取服务器发送的 HTML,而不是所有 javascript 执行后的 HTML。

这个问题的解决方案是在实际浏览器中加载网页,而不是仅仅抓取 html。这允许 Javascript 在您抓取网站之前加载内容。

我建议您查看 Selenium,它是一个可以让您以编程方式控制浏览器的库。使用此浏览器,您可以导航到您的网站,等待内容加载,然后从 Python 中抓取它。您可以在此处找到文档:https://selenium-python.readthedocs.io/

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。