五八同城租房爬虫 项目总结
项目概览
- 目标:抓取 58 同城租房详情页信息,并入库 Oracle。
- 语言/版本:Python 2.7
- 模块分层:
- 入口:
run.py启动任务 - 抓取调度:
reptile_58.py(分页、链接提取、重试与限速) - 网络请求:
python_web.py(urllib2 + UA 伪装) - 解析入库:
regexp_house.py(正则解析)→insert_oracle.py→py_oracle.py
- 入口:
运行入口:
1 | |
网络请求与 UA 伪装
1 | |
要点:统一 UA;请求失败返回 None,由上层控制重试与退避。
分页与链接提取
1 | |
要点:
- 列表页用正则提取详情链接;
- 失败重试(20/30 秒退避)+ 详情访问 5–8 秒随机等待;
- 页码上限到 70 页(
page < 71)。
详情解析与入库
1 | |
入库实现:
1 | |
数据库连接与建表:
1 | |
总结
- 请求层
- 失败重试与退避已实现;可加入超时、代理池与 UA 轮换,提高稳定性。
- 建议切换到
requests,更易设置超时/代理/重试。
- 解析层
- 目前使用正则,易受页面改版影响;可结合 XPath/BeautifulSoup。
- 对抓取文本统一做
.strip()与字符集处理,避免脏数据。
- 入库层
- 当前用字符串拼接 SQL,建议改为参数化,避免注入与类型问题:
1 | |
- 连接复用与批量插入:避免每条关闭连接,使用
executemany批量提交。 - 唯一约束/重复控制:为关键字段建唯一索引,避免数据重复;或使用
MERGE幂等写入。 - 节流与风控
- 已有 5–8 秒随机等待;可叠加每页间额外 sleep、失败快速跳过与后续重扫。
- 日志与监控
- 将
print改为logging,输出到文件;记录失败 URL 以便补抓。
- 将
五八同城租房爬虫 项目总结
https://blog.pangcy.cn/2018/10/27/后端编程相关/python/python2基础/五八同城租房爬虫 项目总结/