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

使用BeautifulSoup爬取网页时目标a标签无法被识别获取求助

问题排查及解决步骤

第一步:先排查URL是否正确

你当前请求的URL是单个产品的详情页,而你要匹配的m_category-overview-tiles__item tile_product-standard是分类列表页的产品卡片类名,详情页本身不会存在这个元素,这是最可能导致返回None的原因。如果你的目标是爬取产品列表,需要先修改为对应分类的列表页URL再测试。

第二步:验证请求是否被反爬拦截

  • 先打印返回状态码确认请求是否正常:print(r.status_code),如果返回值不是200,说明请求被站点拦截
  • 你当前使用的User-Agent版本过旧(Chrome 83是2020年的版本),很容易被反爬策略识别,建议替换为最新版浏览器的User-Agent,同时补全请求头的其他字段,示例如下:
headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8",
    "Accept-Language": "fr-FR,fr;q=0.9,en-US;q=0.8,en;q=0.7",
    "Referer": "https://www.stihl.fr/",
    "Upgrade-Insecure-Requests": "1"
}
  • 部分站点会校验请求Cookie,你可以先发起一次对站点首页的请求,拿到响应Cookie后再携带Cookie请求目标页面。

第三步:验证返回的HTML是否包含目标元素

将请求返回的内容保存为本地HTML文件,打开后直接搜索目标class名,如果搜索不到,说明目标元素是通过JavaScript动态渲染的,requests只能拿到初始静态HTML,无法获取JS生成的内容,两种解决方式:

  • 抓接口获取数据:打开浏览器开发者工具的「网络」面板,筛选「XHR/ Fetch」请求,刷新页面后找到加载产品列表的后端接口,直接调用接口获取JSON格式的产品数据,效率远高于解析HTML
  • 使用无头浏览器渲染页面:用Selenium、Playwright等工具模拟浏览器运行,等待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

driver = webdriver.Chrome()
driver.get("你的列表页URL")
# 等待目标元素加载,最多等待10秒
link = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.CSS_SELECTOR, 'a.m_category-overview-tiles__item.tile_product-standard'))
)
print(link.get_attribute('href'))
driver.quit()

第四步:优化元素选择逻辑

BeautifulSoup的class_参数是严格全匹配,如果目标元素的class属性还有其他值、或者空格顺序不对都会匹配失败,建议改用CSS选择器匹配,只要元素同时包含两个class即可命中:

link = soup.select_one('a.m_category-overview-tiles__item.tile_product-standard')

内容的提问来源于stack exchange,提问作者Moto Jero

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 23:45:04