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

Python用BeautifulSoup爬取去重年份链接及lxml报错解决

年份链接列表去重

你可以根据是否需要保留爬取顺序选两种方案:

  • 无需保留顺序:直接对原始append得到的列表做集合去重,一行代码即可实现:
    unique_year_links = list(set(raw_year_links))
    
  • 需要保留爬取的先后顺序:每次加入列表前做存在性判断,避免重复写入:
    unique_year_links = []
    for link in crawled_year_links:
        if link not in unique_year_links:
            unique_year_links.append(link)
    

采集含"apofasi"标识的案件链接

遍历去重后的年份链接,逐页解析提取符合要求的链接即可,参考代码片段如下:

import requests
from bs4 import BeautifulSoup

# 站点根域名,用于拼接相对路径链接
BASE_SITE_URL = "https://www.epant.gr"
total_case_links = []
# 自定义请求头,避免被站点反爬拦截
REQUEST_HEADERS = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
}

for year_link in unique_year_links:
    page_resp = requests.get(year_link, headers=REQUEST_HEADERS)
    # 这里先用自带解析器,lxml问题修复后可替换为lxml提升解析速度
    soup = BeautifulSoup(page_resp.text, "html.parser")
    # 遍历所有带href属性的a标签
    for a_tag in soup.find_all("a", href=True):
        raw_case_link = a_tag["href"]
        # 相对链接转绝对链接
        if not raw_case_link.startswith("http"):
            raw_case_link = BASE_SITE_URL + raw_case_link
        # 筛选含apofasi的链接且去重
        if "apofasi" in raw_case_link.lower() and raw_case_link not in total_case_links:
            total_case_links.append(raw_case_link)

解决FeatureNotFound找不到lxml树构建器错误

这个错误本质是解析器依赖缺失或调用参数错误,按顺序排查即可:

  1. 先安装lxml依赖,在命令行执行对应命令:
    • pip环境:pip install lxml
    • conda环境:conda install lxml
  2. 检查BeautifulSoup初始化参数,确认解析器名称拼写正确,正确写法为:
    soup = BeautifulSoup(html_content, "lxml")
    
  3. 如果以上步骤都无效,可以直接用Python自带的html.parser作为解析器,不需要额外安装依赖,完全满足普通爬虫的解析需求,就是上文中代码使用的写法。

内容的提问来源于stack exchange,提问作者Θοδωρής Πάλλης

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:06:01