使用BeautifulSoup爬取Pakwheels二手车页li标签无返回数据如何解决
问题排查与修正方案
现有代码的两处核心错误
- 实例化BeautifulSoup时错误传入了字符串
'src',而非实际存储了网页内容的变量src,导致解析的是无意义的字符串,而非真实网页内容 find_all查找标签时,只需传入标签名li即可,不需要加尖括号,你传入的"<li>"不是合法的标签查询参数
额外优化点(避免反爬拦截)
大部分站点会校验请求头的User-Agent字段,没有合法UA的请求会被拦截返回异常内容,需要先构造请求头再发起请求
修正后的可运行代码
import pandas as pd import requests as req import numpy as np from bs4 import BeautifulSoup # 构造请求头模拟浏览器访问 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.pakwheels.com/used-cars/search/-/" result = req.get(URL, headers=headers) # 确认请求正常 if result.status_code == 200: src = result.content # 传入真实的网页内容变量,不要加引号 soup = BeautifulSoup(src, 'lxml') # 直接传标签名li查询 car_name = soup.find_all("li") print(f"匹配到的li标签数量:{len(car_name)}") # 后续可遍历car_name提取所需数据 else: print(f"请求失败,状态码:{result.status_code}")
后续提取建议
如果需要提取特定的li标签(比如带特定class属性的车辆列表项),可以给find_all增加属性筛选参数,比如soup.find_all("li", class_="对应class属性值"),可以精准过滤出你需要的车辆数据项,避免匹配到页面其他无关的li标签。
内容的提问来源于stack exchange,提问作者Abdurehman Dar
相关产品推荐
相关产品推荐

