网页抓取 - 执行“全部复制”而不是 HTML 解析

问题描述 投票:0回答:1

我需要有关如何在不进行正常 HTML 解析的情况下从网页捕获数据的建议。数据通过我似乎无法理解的幕后脚本和服务器端方法呈现到屏幕上。我经常使用 BeautifulSoup 和 Selenium,但这个输出是不同的。

网页非常简单且静态。虽然我无法让 BS 和 Selenium 工作,但简单的“全部复制”效果很好。 (是的,旧的手动方式!)。

关于如何自动化此操作有什么建议吗? 基本上 - > 转到网站,按“复制全部”,将数据返回到 python 和/或保存到文件进行存档。


我尝试了BS和Selenium的许多不同方法,但只得到了部分数据。我认为渲染是作为一种“反盗版”方法来完成的。我过去曾多次与该网站发生争执,他们发布数据的方式似乎故意不一致。随机地,如果我手动进行“复制/粘贴”操作,该网站就会完美运行,除非这不是自动化的。

https://datawrapper.dwcdn.net/vEKjO/39/

python selenium-webdriver web-scraping beautifulsoup copy-paste
1个回答
0
投票

您在页面上看到的数据是从不同的 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

...
© www.soinside.com 2019 - 2024. All rights reserved.