You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

网页爬取返回空列表:covid19india.org爬取问题排查与解决

爬取COVID-19 India网站时获取不到目标元素的问题排查与解决

问题回顾

你运行这段代码后,print(cases_div)输出空列表,没法拿到期望的div.Level1元素:

import requests
from requests import get
from bs4 import BeautifulSoup
import pandas as pd
import numpy as np
url = "https://www.covid19india.org/"
headers = {"Accept-Language":"en-US, en;q=0.5"}
results = requests.get(url,headers = headers)
soup = BeautifulSoup(results.text,"html.parser")
cases_div = soup.find_all('div', class_="Level1")
print(cases_div)

核心原因分析

我帮你排查了下,大概率是以下两个原因之一:

  • 动态内容渲染:这个网站的病例数据是通过JavaScript动态加载的,requests库只能获取服务器返回的静态HTML源码,而你要找的Level1类元素是页面加载后由JS生成的,静态源码里根本不存在,所以BeautifulSoup自然找不到。
  • 元素类名变更:网站可能做了更新,原来的Level1类名已经被修改了——我刚才查了下当前页面,确实没看到这个类名的div,说明这个选择器已经失效了。

解决办法

方案一:用Selenium模拟浏览器加载动态内容

如果目标内容是JS生成的,最直接的办法是用Selenium模拟真实浏览器的渲染过程,这样能拿到完整的页面内容:

  1. 先安装依赖:
pip install selenium
  1. 下载对应浏览器的驱动(比如ChromeDriver,要和你的Chrome版本匹配),然后用下面的代码替换原来的逻辑:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup

url = "https://www.covid19india.org/"
# 配置无头模式,避免弹出浏览器窗口
chrome_options = Options()
chrome_options.add_argument("--headless=new")
# 初始化浏览器驱动
driver = webdriver.Chrome(options=chrome_options)
driver.get(url)
# 给页面留10秒加载时间(也可以用更精准的显式等待)
driver.implicitly_wait(10)
# 获取渲染后的页面源码
soup = BeautifulSoup(driver.page_source, "html.parser")
# 这里可以根据实际页面的类名调整,比如现在页面里的病例统计用的是其他类名,你可以右键检查元素确认
cases_div = soup.find_all('div', class_="你的新类名")
print(cases_div)
# 记得关闭浏览器
driver.quit()

方案二:直接调用网站的API接口(更高效)

爬取页面不如直接请求后端API来得靠谱,我看这个网站的病例数据是通过API获取的。你可以打开浏览器的开发者工具(F12),切换到「Network」标签,刷新页面后找XHR/fetch类型的请求,就能找到返回病例数据的接口,然后用requests直接请求这个接口,拿到结构化的JSON数据,比解析HTML方便多了。

方案三:更新元素选择器

如果只是类名变了,你可以手动检查当前页面的元素:

  • 打开网站,右键点击你要获取的元素,选择「检查」;
  • 在开发者工具里找到该元素的最新类名或其他属性(比如id、data-*属性);
  • 把代码里的class_="Level1"改成新的选择器即可。

注意事项

  • 不要频繁发送请求,避免触发网站的反爬机制导致IP被封禁;
  • 用Selenium时,确保浏览器驱动和浏览器版本一致,否则会报错;
  • 网站的API接口可能会有变化,需要定期检查是否可用。

内容的提问来源于stack exchange,提问作者Soumya Ranjan Sahu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.07 15:52:53