php抓取网页json数据(对以上的url进行爬取importrequests=requests.get)
优采云 发布时间: 2021-12-16 16:20php抓取网页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捕获和分析数据
:
二,