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

Python BeautifulSoup爬取商品标题未得到预期输出求助

问题排查与修复

你的代码无法拿到正确结果,核心问题有3个:

  • requests默认请求头会被目标站点反爬拦截,返回的页面不是浏览器里看到的商品搜索结果,自然匹配不到prodBox节点
  • 提取标题时没有定位到prodTitle容器内部的<a>标签,直接取父div的text属性容易混入多余空白、换行甚至其他子节点内容
  • 遍历商品节点时,每次循环都覆盖products变量,也没有将单条数据存入集合列表,parse函数最终无有效返回值
修正后的完整代码
import requests
from bs4 import BeautifulSoup
import pandas as pd
import time

# 目标搜索页地址
url = 'https://aiswatches.com/search.php?search_query_adv=16570&section=product'
# 模拟浏览器请求头,绕过基础反爬
headers = {
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
}

def get_data(url):
    r = requests.get(url, headers=headers, timeout=10)
    # 自动识别编码避免乱码
    r.encoding = r.apparent_encoding
    soup = BeautifulSoup(r.text, 'html.parser')
    return soup

def parse(soup):
    all_products = []
    # 定位所有商品卡片
    product_cards = soup.find_all('div', class_='prodBox')
    for card in product_cards:
        # 先找标题容器,再找内部的a标签
        title_container = card.find('div', class_='prodTitle')
        if not title_container:
            continue
        title_a = title_container.find('a')
        if not title_a:
            continue
        single_product = {
            'title': title_a.text.strip(),
            'product_link': title_a.get('href', '')
            # 价格字段可按相同逻辑,定位价格标签后提取即可
        }
        all_products.append(single_product)
    return all_products

if __name__ == '__main__':
    page_soup = get_data(url)
    product_list = parse(page_soup)
    # 打印结果验证
    for product in product_list:
        print(product)
    # 需要导出表格的话放开下面注释即可
    # pd.DataFrame(product_list).to_csv('watch_result.csv', index=False, encoding='utf-8-sig')
补充说明
  • 代码里加了节点存在性判断,避免个别商品卡片结构异常导致整个程序崩溃
  • 后续爬取多页数据时,建议在每次请求之间加time.sleep(1~2)的延时,降低被封IP的概率
  • 如果运行后还是拿不到数据,先打印page_soup.prettify()查看实际返回的页面源码,确认和浏览器开发者工具里看到的结构一致后再调整选择器即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 10:09:16