c爬虫抓取网页数据(如何通过谷歌浏览器开发者工具分析真实请求的三个步骤分析)

优采云 发布时间: 2022-04-13 07:19

  c爬虫抓取网页数据(如何通过谷歌浏览器开发者工具分析真实请求的三个步骤分析)

  爬虫的大致思路:抓取网页,分析请求

  解析网页并查找数据

  存储数据,多页面处理

  本课主要讲授如何通过谷歌浏览器开发者工具分析真实请求。

  三步找到真正的请求

  分析:使用 Google Chrome 开发者工具分析网页请求

  测试:测试URL请求中各个参数的作用,找出控制翻页等功能的参数

  Repeat:反复寻找满足爬虫需求的真实请求

  实用链接:爬取知乎

  通过爬取知乎“轮子哥”——vczh相关人士分析Ajax或JavaScript加载数据的真实请求,并展示该爬取方式的具体过程。

  1. 寻找真实请求的测试首先进入“轮子哥-vczh”关注者的页面(注意:需要登录个人知乎帐户优先)

  通过禁用javascript加载发现页面无法正常加载,确认页面的翻页是通过javascript加载数据实现的

  使用谷歌浏览器开发者工具查找收录关注者信息的真实请求。可以发现,真正的请求是以“followees”开头的请求,返回的是一个JSON格式的数据,对应下一页的“Followees”。人”:

  双击该请求返回JSON格式的数据,通过安装JSONView插件可以更好的显示在浏览器中

  然后您可以尝试抓取请求的数据

  2. 尝试爬取真实请求的数据 先尝试使用前几课学习的requests.get() 来爬取数据

  可以发现返回“500 Server Error”,即由于网站反爬虫,服务器返回“500 Service Error”

  这个问题可以通过添加headers请求头信息来解决

  3. 添加headers请求头信息,模拟浏览器访问。请求头信息携带客户端浏览器、请求页面、服务器等信息,用于通知服务器发起请求的客户端的具体信息

  p>

  知乎反爬机制是通过检查请求头信息实现的,所以在使用request请求数据的时候需要加上需要的请求头

  对比知乎的请求头信息和普通请求头信息,发现知乎的请求头有更多的授权和X-UDID信息

  向爬虫添加请求头信息,即添加headers# -*- coding:utf-8 -*-

  导入请求

  标题 = {

  'authorization':' ',#括号内填写你的授权

  'User-Agent':' ',#括号里填你的User-Agent

  }

  url = '*%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%ics&offset=20&limit=20'

  response=requests.get(url, headers = headers).json()

  打印(响应)

  最终代码:#!/usr/bin/env python3

  # -*- 编码:utf-8 -*-

  """

  创建于 2018 年 3 月 20 日星期二 16:01:47

  @作者:杰基

  """

  导入请求

  将熊猫导入为 pd

  *敏*感*词*时间

  标题 = {

  '授权': '承载 2 | 1:0 | 10:1519627538 | 4:z_c0 | 92: Mi4xYzBvWkFBQUFBQUFBSU1JaTVqRU1EQ1lBQUFCZ0FsVk5FdnVBV3dEdHdaRmtBR1lmZEpqT3VvdmtpSm5QMWtkZ1ZB | 787597598f41757929f46f687f78434dbc66d6abc980e40fb50b55cd09062b07',

  'user-agent':'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/6< @4.0.3282.186 Safari/537.36',

  'x-udid':'ACDCIuYxDAyPTg7eVnDe8ytVGX6ivGdKZ9E=',

  }

  user_data = []

  def get_user_data(page):

  for i in range(page):

  url = '*%5D.answer_count%2Carticles_count%2Cgender%2Cfollower_count%2Cis_followed%2Cis_following%2Cbadge%5B%3F(type%3Dbest_answerer)%ics&offset={}&limit=20'.format(i*20)

  response = requests.get(url, headers = headers).json()['data']

  user_data.extend(响应)

  print('爬取页面 %s' %str(i+1))

  时间.sleep(1)

  如果 __name__ == '__main__':

  get_user_data(3)

  df = pd.DataFrame(user_data)

  df.to_csv('users.csv')

  

  补充知识

  1. JSONJSON 是一种轻量级的数据交换格式。连接API爬取数据时,一般数据返回格式为JSON。

  JSONView 插件:前往 Chrome JSONView 插件安装,下载并安装 JSONView 插件,以使 JSON 格式的数据在 Google Chrome 中更好地呈现

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线