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

Why cant I access full response code of a website?

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

然后,我提出了这个 get 请求 scrape 它与 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

但是,在响应中,存在作为该时间表一部分的 类 的 none。有没有办法获得完整的 html 然后 刮掉 它以某种方式?

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

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

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