【发布时间】:2021-11-28 06:20:49
【问题描述】:
我正在尝试从网站中读取表格,但是当我这样做时,我从网站得到的结果显示:“您的浏览器可能已过时。为了获得最佳网站体验,我们建议您更新浏览器。”
我可以在同一个 PGA 网站的 Stats 部分使用 requests.get 而不会出现问题,但由于某些原因,这些历史结果表的显示方式会导致问题。发生的一件有趣的事情是该网站允许您为显示的表格选择不同的年份,但这样做不会导致地址有任何差异,所以我怀疑他们正在以 read_html 不起作用的方式格式化它.还有其他建议吗?代码如下。
import pandas as pd
import requests
farmers_url = 'https://www.pgatour.com/tournaments/farmers-insurance-open/past-results.html'
farmers = pd.read_html(requests.get(farmers_url).text, header=0)[0]
farmers.head()
【问题讨论】:
-
该消息是因为该网站已检查其 lcient(您的代码)是否可以运行 javascript,而那些表明它不能,因此您的代码就像一个无法运行的非常旧的浏览器javascript 这意味着他们正在检查抓取工具,和/或他们希望在浏览器中运行 javascript 来读取/显示数据,而不是提供完整的 html 页面。您必须使用像 Selenium 这样的浏览器模拟,或者深入研究 jvascript 以找到它从浏览器发出的请求,看看您是否可以使用 Python+requests 复制这些请求。
-
;check 可能只是客户端的行为不像普通浏览器,例如浏览器总是会请求刚刚交付的页面中指定的图像和 javascript/css 文件,但是您的代码没有这样做。或者检查可能更微妙/更复杂,例如 JS 代码发出 ajaz 请求,但您的代码没有。
标签: python pandas web-scraping