龙空技术网

一次简单爬虫的分析、开发、部署

爱音乐的程序员小新人 180

前言:

眼前朋友们对“python爬取分页数据”大约比较讲究,小伙伴们都想要剖析一些“python爬取分页数据”的相关文章。那么小编在网摘上汇集了一些对于“python爬取分页数据””的相关文章,希望同学们能喜欢,各位老铁们一起来了解一下吧!

需求

爬取csdn最新文章并记录到数据库

H5地址:

分析

通过浏览器查看前3页的列表数据请求, 总结出url的动态规律

第1页:;category=newarticles&shown_offset=1537075945594796&first_view=true

第2页:;category=newarticles&shown_offset=1537075894000000&first_view=false

第3页:;category=newarticles&shown_offset=1537075870000000&first_view=false

动态的url如下:

{0}&category=newarticles&shown_offset={1}&first_view={2}

请求第1页时, type=new,first_view=true ; 往后翻页时,type=more, first_view=false, shown_offset取值于上一页请求的返回

类似这种前端分页, 为了防止用户翻页时, 数据库有新的记录生成造成前端重复显示, 分页参数的值一般都会由后端控制,后端会给前端返回一个‘时间戳’或‘数据Id’用于下一页请求,比如csdn的shown_offset,这种值一般取自上一页数据的最后一条记录.

开发/设计

语言/工具

python3,基于scrapy框架:

idea,安装python插件

mysql数据库

功能

列表数据分页爬取、解析

列表数据解析时可以继续爬取详情数据

数据记录到数据库,已存在的禁止重复爬取

输出日志文件

分环境部署dev,test,prod

源码

码云:

运行方式: scrapy runspider spider.py

部署

如果基于scrapy的爬虫做到了工程级别或者爬虫数量很多时,部署方案可考虑官方推荐的scrapyd

如果爬虫比较小,需要在linux下快速部署, 可以借助于crontab命令来定时运行爬虫, 如下:

# 每天9点~23点的第30分钟执行一次30 9-23 * * * /usr/local/python3.6.0/bin/scrapy runspider /usr/local/apps/csdn-newarticle-spider/spider.py >/dev/null 2>&1

测试数据结果:

对于内容详情/富文本的爬取, 一般存在主样式的丢失, 如果想正常使用, 需要二次编辑和定制.

标签: #python爬取分页数据