H5地址: https://m.csdn.net/nav/newarticles
分析
通过浏览器查看前3页的列表数据请求, 总结出url的动态规律
第1页:https://www.csdn.net/api/articles?type=new&category=newarticles&shown_offset=1537075945594796&first_view=true

第2页:https://www.csdn.net/api/articles?type=more&category=newarticles&shown_offset=1537075894000000&first_view=false
第3页:https://www.csdn.net/api/articles?type=more&category=newarticles&shown_offset=1537075870000000&first_view=false
动态的url如下:
https://www.csdn.net/api/articles?type={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框架:https://scrapy.org
idea,安装python插件
mysql数据库
功能
列表数据分页爬取、解析
列表数据解析时可以继续爬取详情数据
数据记录到数据库,已存在的禁止重复爬取
输出日志文件
分环境部署dev,test,prod
源码
码云: https://gitee.com/wangxu3655/csdn-newarticle-spider
运行方式: 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
测试数据结果:
对于内容详情/富文本的爬取, 一般存在主样式的丢失, 如果想正常使用, 需要二次编辑和定制.