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

Python+BeautifulSoup循环问题求助:无法提取Autotrader广告标题

解决Python+BeautifulSoup提取Autotrader广告标题的问题

我太懂这种卡壳的憋屈感了——Autotrader这类电商网站总悄悄改页面结构,还搞反爬机制,咱们一步步拆解搞定它!

先看你给出的代码片段,问题大概率出在两个核心点:要么请求被网站拦截了,要么元素定位的标签/class名已经失效。下面给你一套完整的修复方案:

第一步:先搞定请求拦截问题

Autotrader会识别非浏览器的请求,直接用get(url)大概率返回空页面或验证码页面,必须加请求头模拟浏览器访问:

完整修复代码

from requests import get
from bs4 import BeautifulSoup
import pandas as pd

# 模拟Chrome浏览器的请求头,你也可以换成自己浏览器的真实User-Agent
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 = 'https://www.autotrader.co.uk/car-search?sort=sponsored&sellertype=private'
response = get(url, headers=headers)

# 先检查请求是否成功,200代表正常访问
print(f"请求状态码: {response.status_code}")
if response.status_code != 200:
    print("⚠️ 请求被拦截了!可能需要更换User-Agent,或者网站要求验证码验证")
else:
    html_soup = BeautifulSoup(response.text, 'html.parser')
    # 这里的标签和class是当前Autotrader页面的结构,务必自己验证!
    # 验证方法:打开网页按F12,右键标题→检查,查看对应标签和class
    ad_containers = html_soup.find_all('h3', class_='listing-title')
    
    titles = []
    for container in ad_containers:
        # 标题文本通常嵌套在a标签里,需要二次查找
        title_link = container.find('a', class_='listing-title__link')
        if title_link:
            # strip()用来清除多余的空格和换行符
            titles.append(title_link.get_text(strip=True))
    
    # 输出提取到的标题
    print("\n提取到的广告标题:")
    for num, title in enumerate(titles, 1):
        print(f"{num}. {title}")
    
    # 转成DataFrame方便后续分析处理
    df = pd.DataFrame({'广告标题': titles})
    print("\nDataFrame预览:")
    print(df.head())

关键注意事项

  • 随时更新元素定位:Autotrader的页面结构隔段时间就会调整,一定要自己用浏览器开发者工具(F12)查看当前标题对应的标签和class。比如某天标题改成h2标签、class为new-title-class,就把find_all('h3', class_='listing-title')改成find_all('h2', class_='new-title-class')。
  • 请求头灵活调整:如果还是被拦截,去自己浏览器的请求头里复制真实的User-Agent,甚至可以添加Accept-Language等字段增强模拟效果。
  • 异常提前排查:代码里加了状态码检查,能快速判断请求是否成功,避免在空页面上做无用功。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:39:12