Requests+BeautifulSoup爬取锂价页面表格无数据的解决求助
问题:爬取动态加载的锂价表格数据失败怎么办?
我尝试爬取页面https://www.benchmarkminerals.com/lithium-prices/,用requests获取内容后,通过BeautifulSoup解析能找到id为lithium-index_summary的表格,但表格内没有数据。推测是表格信息通过jQuery动态加载导致的,求解决办法。
我的代码:
import requests import bs4 lith = requests.get('https://www.benchmarkminerals.com/lithium-prices/') lithium_soup = bs4.BeautifulSoup(lith.content, 'html.parser') lithium_table = lithium_soup.find('table', {'id':'lithium-index_summary'}) print(lithium_table)
返回结果:
<table class="price-index_summary" id="lithium-index_summary"></table>
注:该表格实际包含的数据及网页真实HTML可查看对应截图。
解决方案
方法1:使用Selenium模拟浏览器渲染
动态加载的数据需要浏览器执行JS代码才能生成,Selenium可以模拟真实浏览器环境,等待数据加载完成后再抓取:
from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC import bs4 # 初始化Chrome浏览器(需提前安装对应版本的chromedriver) driver = webdriver.Chrome() driver.get('https://www.benchmarkminerals.com/lithium-prices/') # 等待表格加载完成,最多等待10秒 wait = WebDriverWait(driver, 10) wait.until(EC.presence_of_element_located((By.ID, 'lithium-index_summary'))) # 获取渲染后的页面源码并解析 page_source = driver.page_source lithium_soup = bs4.BeautifulSoup(page_source, 'html.parser') lithium_table = lithium_soup.find('table', {'id':'lithium-index_summary'}) # 提取表格数据示例 rows = lithium_table.find_all('tr') for row in rows: cols = row.find_all('td') print([col.text.strip() for col in cols]) # 关闭浏览器 driver.quit()
方法2:抓包获取后台API接口
动态加载的数据通常来自后台API,可通过浏览器开发者工具抓包找到数据接口:
- 打开浏览器F12开发者工具,切换到「Network」标签
- 刷新页面,筛选「XHR」或「Fetch」类型请求
- 定位返回表格数据的接口URL及请求参数
- 直接用
requests请求该接口,获取JSON格式数据,无需解析HTML
示例代码(假设找到对应API接口):
import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36' } response = requests.get('https://www.benchmarkminerals.com/api/lithium-prices', headers=headers) data = response.json() # 处理JSON数据 print(data)
注意:部分网站API可能需要认证或有反爬机制,需根据实际情况调整请求头、携带必要参数。
内容的提问来源于stack exchange,提问作者Tayla Corney
相关产品推荐
相关产品推荐

