我需要有关如何在不进行正常 HTML 解析的情况下从网页捕获数据的建议。数据通过我似乎无法理解的幕后脚本和服务器端方法呈现到屏幕上。我经常使用 BeautifulSoup 和 Selenium,但这个输出是不同的。
网页非常简单且静态。虽然我无法让 BS 和 Selenium 工作,但简单的“全部复制”效果很好。 (是的,旧的手动方式!)。
关于如何自动化此操作有什么建议吗? 基本上 - > 转到网站,按“复制全部”,将数据返回到 python 和/或保存到文件进行存档。
我尝试了BS和Selenium的许多不同方法,但只得到了部分数据。我认为渲染是作为一种“反盗版”方法来完成的。我过去曾多次与该网站发生争执,他们发布数据的方式似乎故意不一致。随机地,如果我手动进行“复制/粘贴”操作,该网站就会完美运行,除非这不是自动化的。
您在页面上看到的数据是从不同的 URL 以
CSV
形式加载的。要加载它,您可以使用以下示例:
from io import StringIO
import pandas as pd
import requests
url = "https://datawrapper.dwcdn.net/vEKjO/39/dataset.csv"
headers = {
"User-Agent": "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:123.0) Gecko/20100101 Firefox/123.0"
}
data = requests.get(url, headers=headers).text
df = pd.read_csv(StringIO(data), sep="\t")
print(df)
打印:
Unnamed: 0 Feb-24 Jan-24 Dec-23 Nov-23 Oct-23 Sep-23 Aug-23
0 NaN % % % % % % %
1 ECONOMIC PROBLEMS (NET) 30 34 32 33 38 34 31
2 Economy in general 12 12 14 13 14 16 15
3 High cost of living/Inflation 11 13 12 10 14 9 8
4 Federal budget deficit/Federal debt 3 2 2 3 4 3 2
5 Taxes 2 1 1 1 * 1 *
6 Unemployment/Jobs 2 2 2 2 2 3 2
...