如何用Python爬取页面所有<a>标签数据并提取页面全部ID
爬虫代码调整方案
核心调整点
- 修复基础语法错误:原代码最后一行
prind(pd)为笔误,需改为print(df),否则会直接触发运行报错 - 优化元素定位规则:原代码直接抓取页面所有
<a>标签会混入大量无关链接内容,目标Bug ID对应的链接href均包含/show_bug.cgi?id=前缀,可通过该特征精准过滤目标元素 - 补充请求头配置:模拟浏览器UA标识,避免被网站反爬策略拦截,返回非正常页面内容
修正后完整可运行代码
import requests import pandas as pd from bs4 import BeautifulSoup # 模拟浏览器请求头,避免反爬拦截 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" } url = "https://bugzilla.mozilla.org/buglist.cgi?quicksearch=all" resp = requests.get(url, headers=headers) soup = BeautifulSoup(resp.content, "html.parser") data = [] # 精准匹配Bug ID对应的链接 id_links = soup.find_all("a", href=lambda x: x and "/show_bug.cgi?id=" in x) for link in id_links: bug_id = link.text.strip() # 过滤非纯数字的无效ID if bug_id.isdigit(): data.append({"ID": bug_id}) df = pd.DataFrame(data) print(df)
运行上述代码即可输出页面中所有Bug ID的结构化数据表。
内容的提问来源于stack exchange,提问作者Abdurehman Dar
相关产品推荐
相关产品推荐

