php抓取网页json数据(对以上的url进行爬取importrequests=requests.get)

优采云 发布时间: 2021-12-16 16:20

  php抓取网页json数据(对以上的url进行爬取importrequests=requests.get)

  URL列表=[]

  #将地址拼接到爬网

  对于范围(1,5)2)>:

  url=urlbase+str(i)+“&=49”url列表。附加(url)

  #循环获取列表页面信息

  2、使用请求对上述URL进行爬网

  导入请求

  内容=请求。获取(url,headers=headers)。内容

  在爬网过程中,考虑到模拟真实用户的需要,需要添加cookie或头参数

  (二)。对爬行JSON格式数据的分析

  到目前为止,数据已经被抓取下来并存储在内容中,但是如何提出关键数据是非常重要的

  为了在浏览器中轻松浏览JSON格式的数据,建议在chrome中添加扩展jsonview,以实现JSON格式数据的结构化显示。例如,人人贷款的数据如下所示

  

  有两种方法可以解析此数据

  1、正则表达式解析

  例如,如果我们想获取“金额”的内容,可以通过以下方式获取:

  *敏*感*词*

  ##使用regular提取金额字段amount=re findall(r'“amount”:(.*),(内容)

  哪里的内容是爬下来的内容

  2、基于JSON格式获取

  事实上,JSON的数据格式与Python的dict非常相似。Python的importjson包中提供了两种经典的预处理方法:

  导入json

  格言={1:2,3:4,“55”:“66”}

  #测试json。倾倒

  打印类型(dict),dict_

  json_u;str=json。转储(dict_)

  打印“json.dumps(dict)返回:”

  打印类型(json_str),json_str

  #测试json。装载

  打印“\njson.loads(str)返回”

  dict_u2=json。加载(json_str)

  打印类型(dict_2)@>,dict_2

  输出为:

  计划结果:

  {'55':'66',1:2,3:4}

  json。转储(dict)返回:

  {“55”:“66”,“1”:2,“3”:4}

  json。负载(str)返回

  {u'55':u'66',u'1':2,u'3':4}

  从上述示例可以看出,转储和加载的功能如下:

  json。倾倒

  :将ptyhon的Dict转换为str

  json。加载:将STR转换为Python的dict类型

  有了以上基础知识,可以通过以下方式直接对人人贷款数据进行处理:

  FORURLINURLIST:

  //得到满足

  内容=请求。获取(url,headers=headers)。内容

  //使用JSON,loads方法将STR转换为dict类型

  con=json。Loads(content)#获取评论列表,因为以前不需要很多其他东西

  //直接使用Python中dict的数据采集方法获取贷款列表,然后直接获取每个数据

  commentList=con[“数据”][“贷款”]

  对于commentList中的项目:

  loanId=项目['loanId']

  标题=项目['title']

  金额=项目[“金额”]

  利息=项目[“利息”]

  月数=项目[“月数”]

  备注:

  使用第二种方法时,应注意返回的数据是否为标准JSON格式。如果不是标准JSON格式,则可能需要额外处理。例如,京东产品的审查数据

  这是中国联通的苹果iphone7plus(a166)128G亮黑色4G手机的评论数据

  直接打开上面的链接后,您会发现jsonview下没有正式的JSON格式数据显示。对于这种数据类型,可以通过正则表达式获取,也可以将JSON转换为dict

  仔细分析攀爬数据:

  

  原文页:

  

  我们想要抓取的是用户评论数据,而我们抓取的内容不是标准JSON格式的数据。如上图所示,我们抓取的内容是将数据放入fetchjson_Comment98vv52063(),括号中的数据是标准JSON格式的数据

  因此,对于这类数据,我们应该首先用括号正则表示数据,然后使用loads方法将其转换为Python的dict类型数据进行处理

  源代码如下:

  #爬行

  URL列表中的forurl:

  cont=请求。获取(url,headers=headers,cookies=cookie)。内容

  #这是非常重要的。这里的正则表达式以数字或字母开头,后跟()

  content=rex。Findall(cont)[0]#去掉括号中的内容,这是一种标准的JSON格式数据

  con=json。加载(内容,“gbk”)

  #进入评论列表,因为之前还有很多不需要的东西

  commentList=con['comments']

  对于列表中的项目:

  id=项目['id']

  内容=项目['content']。条带()

  referenceName=项目['referenceName']

  productColor=项目['productColor']

  技巧:您可以尝试将()中的数据提交给一些在线JSON解析网站(),以查看JSON数据的排列格式,从而更清楚地了解如何提取数据

  (三)参考文献:

  1、使用Python-urllib捕获和分析数据

  :

  二,

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线