1、建议
- 1、简单的一些静态网站可以直接看Chrome里面的Network请求分析获得数据。
- 2、还有一些动态的网站ajax请求,可以借助一些工具进行分析,或者用selenium模拟浏览器行为也行。
2、爬取步骤及思路
- 1、确定要爬取的目标数据,逆向推理分析网站结构,选择获取页面详情的最优路径:
- (1)逆向推理分析网站结构:通过目标数据,逐步分析祖辈的url链接(ps:一般对首页的url进行get请求,会得到一些需要的cookie参数)。
- (2)选择获取页面详情的最优路径: 一个页面可能有多个路径可以到达,在保证能够拿到全量数据的情况下,优先选择请求次数少的路径。比如如下图片中,可以按三种性质查询获得数据,通过分析,按地区总省查询就能获得全量数据。
- 2、借助工具(如谷歌浏览器自带的谷歌开发者工具、mitmproxy抓包工:具、postman测试数据等),分析请求和响应(ps:并不是所有工具都必须一起使用,如果通过第一个就可以分析获得所要的数据,那么后面就不用使用那些工具了)。
- 3、针对反爬制定处理方法;有的网站具有反爬,诸如user-agent和referer检测,cookie反爬、验证码反爬、IP限频次,包括一些由网页javaScript生成的隐藏参数的动态改变加密等。
- (1)对于user-agent:创建一个列表,每次请求随机替换 https://github.com/Shirmay1/Python/blob/master/Proxyip/useragent.py
- (2)referer检测,把请求头里面的refer放进去,主要告诉它我们是从哪个页面访问开始的
- (3)对于cookie反爬,cookie有两种方式生成,一种是浏览器请求,服务器返回响应中set-cookie而得的;另一种就是该网站里面写的代码如javascript生成的cookie。前者可以通过requests请求,response.cookies获得cookie;后者就比较麻烦,你可以要回到Chrome开发者工具里面去找到生成cookie的js文件,把它保存到本机生成cookie信息。
- (4)对于验证码反爬,那就要**验证码啦,可以自行百度看看**验证码的思路;当然有的链接图片的验证码是动态变化的,这时候可以携带cookie参数试试,或者其他必要的参数,保持请求的一致性。
- (5)IP限制频次,一个是爬的慢一点,或者每隔一段时间休息一下,再继续爬,模拟的像一个正常用户的访问;第二个是加代理,用代理ip进行访问。
- (6)等等………………
- 4、编写代码,调试bug,获取数据
相关文章: