抓取网页、分析请求
解析网页、寻找数据
储存数据、多页处理 -

可以看到,有些网址翻页后URL是不变的,那该怎么爬取,请看下文。
谷歌浏览器——检查——Network
首先清空请求列表,点击下一页(第2页)
箭头所指的地方就是真实请求
以下是第2、3、4页的请求,通过对比可以发现网站是通过pageIndex参数控制翻页的,并且pageSize参数删去之后并不会对请求产生影响
有关参数的信息可以在Hearders的Query String Parameters里查找到
翻页后URL不发生变化的网站的数据一般都是通过Ajax或者JavaScript加载的,可以在过滤器的XHR或者JS中找到真实请求
分析:使用谷歌浏览器开发者工具分析网页的请求
测试:测试URL请求中每个参数的作用,找出控制翻页等功能的参数
重复:多次重复寻找符合爬虫需要的真实请求
通过爬取知乎“轮子哥”——vczh关注的人分析Ajax或者JavaScript加载的数据的真实请求并展示这种爬取方法的具体过程。
首先,进入“轮子哥——vczh”关注的人的页面(注意:需要先登录个人知乎账号)
通过禁止JavaScript加载的方法发现页面不能正常加载,确认该页面的翻页是通过JavaScript加载数据实现的
使用谷歌浏览器开发者工具寻找包含关注人信息的真实请求,可以发现真实请求是以“followees”开头的请求,其返回一个JSON格式的数据,该数据对应下一页的“他关注的人”:
接下来便可以尝试爬取该请求的数据
首先使用requests.get()尝试爬取数据
可以发现返回了“500 Server Error”,即由于网站反爬虫的原因,服务器返回了“500服务错误”
该问题可以通过添加hearders请求头信息解决
请求头信息承载了关于客户端浏览器、请求页面、服务器等相关的信息,用来告知服务器发起请求的客户端的具体信息
知乎的反爬虫机制是通过核对请求头信息实现的,所以需要在使用requests请求数据的时候加上所需的请求头
对比知乎的请求头信息和常见的请求头信息,发现知乎请求头多了authorization和X-UDID的信息
在爬虫程序中添加请求头信息,即添加headers
注:刚才写的时候出问题了,说是User-Agent问题,查了半天,发现是在最前面多了个空格。。
运行程序,成功返回数据
pandas DataFrame的from_dict()方法可以很方便地把爬取到的数据保存为DataFrame格式的结构化数据
定义一个get_user_data()函数,实现翻页爬取功能,并添加上爬取时间间隔以免由于爬取太频繁给服务器造成负担
ok,成功解决