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

Python使用BeautifulSoup从div类提取数据代码运行失败求助

代码问题排查与修正

存在的问题

  • CSS选择器语法错误:原代码写的ba608fb8 de8df3a3.li不符合规则,类名需要加.前缀,li是标签名要放在正确位置,同时要匹配同时携带两个类名的li标签,原写法完全错误导致根本匹配不到任何元素。
  • append方法调用语法错误:all_data.append[(price)]中方法调用应该用圆括号,误用方括号会直接触发语法报错。
  • 未加请求头容易触发反爬:直接用requests发起无UA的请求,OLX平台会直接返回异常页面或拦截响应,拿到的soup本身就没有目标内容。
  • 提取逻辑不完善:find_all返回的是标签对象列表,直接存储得到的不是价格文本,不需要多元素匹配的情况下应该用find,同时需要提取标签内的文本内容。

修正后的可运行代码

import requests
import pandas as pd
from bs4 import BeautifulSoup

# 加UA模拟浏览器请求,避免被反爬拦截
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://www.olx.com.pk/items?page=1"
r = requests.get(url, headers=headers)
soup = BeautifulSoup(r.content, "html.parser")
# 修正CSS选择器,匹配携带对应两个类的li商品标签
rows = soup.select("li.ba608fb8.de8df3a3")
all_data = []
for row in rows:
    # 用find匹配单个价格标签,提取文本
    price_tag = row.find("div", class_="_7978e49c _2e82a662")
    # 加判空避免部分商品没有价格时报错
    price = price_tag.text.strip() if price_tag else ""
    all_data.append(price)
print(all_data)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 08:18:04