如何通过类选择元素并获取文本?BeautifulSoup新手爬取求助
用BeautifulSoup获取class为sorting_1的元素数值
步骤1:安装依赖库
先确保你装了requests和beautifulsoup4,终端执行:
pip install requests beautifulsoup4
步骤2:编写爬取代码
以下是完整的示例代码,包含请求页面、解析和提取数值的逻辑:
import requests from bs4 import BeautifulSoup # 模拟浏览器请求头,避免被网站拦截 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" } # 目标页面URL url = "https://www.worldometers.info/coronavirus/#news" # 发送请求获取页面内容 response = requests.get(url, headers=headers) # 检查请求是否成功,失败则抛出异常 response.raise_for_status() # 用BeautifulSoup解析HTML soup = BeautifulSoup(response.text, "html.parser") # 查找所有class为sorting_1的<td>元素(这类元素通常在数据表格里) sorting_items = soup.find_all("td", class_="sorting_1") # 遍历提取每个元素的数值文本 for item in sorting_items: # strip=True 去除文本前后的空格、换行符 clean_value = item.get_text(strip=True) print(clean_value)
关键说明
- 为什么用
find_all("td", class_="sorting_1")?因为sorting_1是DataTables插件给排序列的单元格加的类,这些元素基本都是表格单元格<td>标签。 - 如果只需要单个匹配的元素,把
find_all换成find即可。 - 部分数值可能包含逗号(比如
1,234),如果需要转成数字,可以用int(clean_value.replace(",", ""))或者float()处理。 - 如果发现获取不到元素,先检查请求返回的
response.text里有没有sorting_1这个类——要是没有,说明内容是动态加载的,得用Selenium这类工具处理。
内容的提问来源于stack exchange,提问作者Ömer Sevban Tümer
相关产品推荐
相关产品推荐

