【问题标题】:Why cant I access full response code of a website?为什么我无法访问网站的完整响应代码?
【发布时间】:2021-08-18 02:52:06
【问题描述】:

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

然后,我提出了这个获取请求,用 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,然后以某种方式抓取

【问题讨论】:

  • 仅供参考,它是 scrape(以及刮、刮、刮)而不是废料。报废意味着像垃圾一样扔掉..

标签: python-3.x web-scraping python-requests xmlhttprequest


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢。我浏览了一些视频,现在找到了解决问题的方法。
猜你喜欢
  • 2022-11-25
  • 1970-01-01
  • 2021-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
  • 1970-01-01
  • 2016-03-29
相关资源
最近更新 更多