掌握Python爬虫的核心流程,从零开始抓取结构化数据。本教程以某汽车网站二手车页面为例,你将系统学习如何定位、提取并存储“车型”、“车辆信息”与“价格”等关键字段,最终生成规范的Excel或CSV文件,实现数据自动化采集。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
构建爬虫项目的第一步是配置核心库。Requests负责发送HTTP请求,lxml提供高效的HTML/XML解析能力,Pandas则用于数据清洗与结构化存储。这三个库构成了数据抓取、解析与处理的标准技术栈。
import requests # 用来请求网页
from lxml import etree # 解析网页结构
import pandas as pd # 存数据用
定义目标URL是数据抓取的起点。为规避基础反爬机制,需在请求头中设置User-Agent,模拟真实浏览器访问。这一步能有效提升首次请求的成功率,是爬虫脚本稳定运行的前提。
url = 'https://www.che168.com/wenzhou' # 温州二手车页面
header = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36'
}
使用Requests库向目标地址发送GET请求,并携带预设的请求头。成功响应后,通过`resp.text`属性即可获取网页的完整HTML源代码,这是后续进行数据解析的原始材料。
resp = requests.get(url, headers=header)
print(resp.text) # 输出网页源代码
将获取的HTML文本转换为lxml可处理的树状结构。运用XPath语法精准定位到包含目标数据列表的容器元素。同时,初始化三个空列表,为后续存储提取出的车型、车辆详情和价格数据做好准备。
html = etree.HTML(resp.text) # 把代码转成可解析的格式
# 定位到存放二手车信息的区域
divs = html.xpath('//*[@id="goodStartSolrQuotePriceCore0"]/ul/li')
# 准备3个空列表存数据
car_type1 = [] # 车型
car_message1 = [] # 车辆信息
car_price1 = [] # 价格
遍历定位到的每一个列表项元素,分别使用XPath路径提取具体的车型名称、车辆描述信息与价格文本。对提取结果进行非空判断后,存入对应的列表。最后,利用Pandas的DataFrame将三个列表整合为一个结构化的二维数据表。
for div in divs:
# 提取车型
car_type = div.xpath('./a/div[3]/h2/text()')
if car_type:
car_type1.append(car_type[0])
# 提取车辆信息
car_message = div.xpath('./a/div[3]/p/text()')
if car_message:
car_message1.append(car_message[0])
# 提取价格(把多个文本拼接成字符串)
car_price = ''.join(div.xpath('./a/div[3]/div/span//text()'))
if car_price:
car_price1.append(car_price)
# 转成DataFrame表格
dic = {'车型': car_type1, '信息': car_message1, '车价': car_price1}
data = pd.DataFrame(dic)
数据清洗与整合完成后,使用Pandas内置的导出功能,一键将DataFrame保存为Excel或CSV格式。这两种格式具有极佳的通用性,便于进行后续的数据分析、可视化或导入数据库。
data.to_excel('温州二手车信息.xlsx') # 存为Excel
data.to_csv('温州二手车信息.csv') # 存为CSV
实施爬虫时需关注两个核心要点:第一,网页结构可能变动,文中的XPath路径需根据目标站点的实际DOM结构进行调整。第二,务必遵守网络爬虫规范,参考目标网站的robots.txt协议,并通过设置合理的请求间隔(如使用`time.sleep`)来避免对服务器造成压力,确保数据采集的合法性与可持续性。
本教程展示了一个完整的Python爬虫工作流,涵盖了从发送请求到数据落地的全链路。理解此框架后,你可以通过替换目标URL和调整解析规则,将其复用于其他公开网页的数据抓取任务。