易车网爬虫 项目总结
技术栈与环境
- 语言与版本:Python 2.7
- 无界面浏览器:PhantomJS(配合 Selenium 驱动)
- 自动化库:selenium
- 数据库:Oracle(cx_Oracle 驱动)
- 其他:re(正则)、time、logging
依赖安装(Python 2.7):
1 | |
PhantomJS 下载与配置:
- 下载地址:http://phantomjs.org/download.html
- 将解压后的
bin/phantomjs路径加入系统 PATH,或在代码中通过executable_path指定。
核心流程
- 启动 Selenium(PhantomJS)并访问易车网入口页(或登录页)。
- 执行登录(如需),等待页面加载完成。
- 进入列表页,循环分页,逐条打开详情页或在列表直接解析。
- 用正则或 DOM 解析提取字段,组织为结构化数据。
- 连接 Oracle,执行参数化插入,提交事务。
- 去重(触发器或唯一约束),记录日志,异常重试与限速。
启动 PhantomJS 与登录示例
1 | |
列表与详情解析示例
方式一(DOM 解析):
1 | |
方式二(正则,对 page_source 解析):
1 | |
分页抓取与限速
1 | |
Oracle 数据入库
1 | |
去重策略
触发器示例(按 car_name 去重,保留 rowid 最小的一条):
1 | |
更推荐的方式:
- 为
car_name, link创建唯一索引,插入时用MERGE或捕获唯一键冲突跳过。
运行组织与错误处理
1 | |
调试与总结
- 超时与稳定性:对关键节点使用
WebDriverWait,设置set_page_load_timeout,失败重试。 - 速度控制:详情抓取间隔
sleep(1),必要时在列表批量提取,减少详情打开次数。 - 选择器维护:优先 CSS 选择器,页面改版时集中更新;正则仅在结构稳定时使用。
- 数据质量:入库前做
.strip()清洗;字段标准化(价格单位、里程单位)。 - 去重与幂等:唯一键或 MERGE 优于触发器;确保重复运行不会膨胀数据。
- 环境依赖:PhantomJS 已停更,后续可考虑 Chrome Headless(需适配 Python 3 与新版 selenium)。
易车网爬虫 项目总结
https://blog.pangcy.cn/2018/10/29/后端编程相关/python/python2基础/易车网爬虫 项目总结/