Skip to main content
 首页 » 编程设计

python之如何仅在使用 Python 请求加载数据后才抓取 html 表

2025年05月04日22over140

我正在尝试学习使用 python 进行数据抓取,并且一直在使用 Requests 和 BeautifulSoup4 库。它适用于普通网站。但是当我试图从延迟加载表数据的网站中获取一些数据时,我发现我得到了一个空表。一个例子是 this webpage

我试过的脚本是一个相当常规的脚本。

import requests 
from bs4 import BeautifulSoup 
 
response = requests.get("http://www.oddsportal.com/soccer/england/premier-league/everton-arsenal-tnWxil2o#over-under;2") 
soup = BeautifulSoup(response.text, "html.parser") 
 
content = soup.find('div', {'id': 'odds-data-portal'}) 

数据加载到页面的 odds-data-portal 表中,但代码没有提供。如何确保表已加载数据并首先获取数据?

请您参考如下方法:

抱歉,我无法打开链接。但该表可能是通过以下两种方式之一生成的:

  1. 完全通过 JavaScript,没有 AJAX 调用。
  2. 使用 AJAX 调用和一些 JavaScript 进行 DOM 操作。

如果是第一种情况,那么你别无选择,只能使用selenium-webdriver in Python。 .另外,您可以查看此 answer 中的示例.

如果是第二种情况,那么你可以找出URL和发送的数据,然后使用requests模块发送一个类似的请求来获取数据。数据可以是 JSON 格式或 HTML(取决于开发人员的水平)。您必须相应地解析它。

有时,AJAX 调用可能需要 CSRF token 或 cookie 作为数据,在这种情况下,您将不得不恢复到第一种情况下的解决方案。