源码:https://github.com/liuyicheng3/wxbSpider
目标
获取文章的h5链接,文章的title,文章的,文章的封面
Attention:
不要直接存储文章的内容,这样版权风险很大,
存文章的链接的话,我们可以直接显示文章的链接出处来声明来源
方案一
一个是通过 按键精灵加上proxy代理 拦截网络请求
也可以通过charles的auto save 功能(tools/Auto save)自动保存拦截到的数据,然后通过python的watchdog 监控目录下的数据变化(可以获得一个事件),解析每次网络请求的返回值了
参考资料:
https://github.com/lijinma/wechat_spider
https://github.com/251321639/wechat_brain
方案二 :第三方的微信接口
- 搜狗微信搜索
- newsrank
- 微小宝
2.1 搜狗搜索
问题:
- 文章的链接是有时效性的
https://mp.weixin.qq.com/s?src=11×tamp=1519960349&ver=729&signature=rR4FhNbqgqOhLeFrdvvRWr5cRF79uzrOuKGimM5FRK5xPMxF*28MHYaN*q9fawJIcGbdbK9qxiiOPfv7AY-dy4J6DYOg3Ub505vGoNC3uzt644CvvDiHTh7i*1Bgd0cU&new=1
过了12h后就打不开了 - 无法确定获取的量,直接爬取分类的话量不足
2.2 新榜
公众号(可遍历)的量级:22*50
每个公众号可返回最新发布的10条
而每个公众号一天更新的量一般是5条,所以总量大约是2200,满足不了要求
2.3 微小宝
其中韦小宝在公众号列表里面的22个分类,一共大约有1w个公众号,每个公众号的日更大约有5篇
所以一共大约有5w条记录
微小宝爬虫需要注意的细节:
- 要登录
直接爬接口(接口请求时间间隔越短越容易被发现),过一段时间就会告知是robot,这时候请求一下首页输入一下验证码
请求公众号的详情时候 注意加一下 refer字段,这样避免被屏蔽
验证码是和session 绑定的,所以请求验证码也需要添加session 和 refer,然后直接调用unlock接口。由于第一次无法获取验证码的图片,建议点击一下验证码,重新获取一下验证码(开发者模式查看具体url规则)
温馨提示:
法律上的规定是,抓取公共展示的信息不违法,允许抓取网站内容,对公众展示内容必须提供来源及源站地址,若有版权纠纷,必须配合版权方进行内容下架,否则可以到工信部投诉举报侵权网站,投诉多了有取消域名备案的风险。
涉及版权的经济损失,可以提起诉讼申请经济赔偿。
其他
这个地方如果仅仅是爬到链接位置,有的链接不确定是否还可以访问,可以用 requests.head(url),请求一下判断resp.status_code 是不是200