作者love11098787 (sunny_girl)
看板Python
标题[问题] json多层解析问题
时间Tue Jul 21 11:33:11 2020
python + 爬虫新手在爬google trends资料时遇到问题
找了好多资料都无法解决困扰
请版上神人帮忙解救QQ
以下为部分的json格式
https://i.imgur.com/gG7mDYP.jpg
https://i.imgur.com/PezSFi0.jpg
https://i.imgur.com/tpZE6uS.jpg
以下是目前的code
webdatas = data['default']['trendingSearchesDays'][0]['trendingSearches']
for news in webdatas :
print (news['title']['query'])
print (news['formattedTraffic'])
count len()
if count !=0 :
for i in count :
print (news['relatedQueries'][i]['query'])
print (news['articles'][i]['title'])
遇到的问题是:
最後那两行想抓
1.每个relatedQueries下的每个query
2.每个articles下的每个title
例如
title1是动滋券
relatedQueries有6个query(动滋网、动滋、体育署…)
articles有9个title
title2是威力彩
relatedQueries有0个query
articles有1个title
每个数量都不同,可能需要用count和for回圈去跑
但功力还不够不太知道count len()那边可以怎麽写
还是有其他写法吗
再麻烦大家了QQ
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.137.52.53 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1595302393.A.929.html
1F:推 ddavid: 根本不需要计算个数啊 07/21 11:41
2F:→ ddavid: 那是个list就让for帮你去跑每一个就好了 07/21 11:41
3F:→ ddavid: for rquery in news['relatedQueries']: 之类的 07/21 11:41
4F:→ ddavid: article那边也一样 07/21 11:42
5F:→ ddavid: for article in news['articles']: 就好 07/21 11:42
6F:→ ddavid: 也不用去判定个数,反正是空list自然就一次也不会跑,除非 07/21 11:43
7F:→ ddavid: 空的时候它会刻意设定为None或其他处理方式才需要特别判断 07/21 11:43
8F:推 ddavid: 还是说你的问题是卡在没用json.loads()解析json字串? 07/21 11:47
9F:→ love11098787: 前面有用json.loads处理过了,因为这边还有https:/ 07/21 12:30
10F:→ love11098787: /i.imgur.com/nOtWPJA.jpg所以比较难处里,刚刚试 07/21 12:30
11F:→ love11098787: 这个跑不出东西for i in news['relatedQueries']: 07/21 12:30
12F:→ love11098787: print (news['relatedQueries'][i]['query']) 07/21 12:30
13F:推 ddavid: 你搞错for的意义了吧 07/21 12:34
14F:→ ddavid: for rquery in news['relatedQueries']: 07/21 12:34
15F:→ ddavid: print(rquery['query']) 07/21 12:35
16F:→ ddavid: 这边for的不是index,直接是里面物件本身 07/21 12:36
17F:→ love11098787: 这样的话只跑的出第一个query,第二个第三个都跑不 07/21 13:23
18F:→ love11098787: 出来QQ,跟我之前print (news['relatedQueries'][0 07/21 13:23
19F:→ love11098787: ]['query'])结果是一样的 07/21 13:23
20F:→ hongyan: 你的news['relatedQueries']是一个list,里面的物件是dic 07/21 15:31
21F:→ hongyan: t所以还要一层for回圈把dict东西叠代出来 07/21 15:34
22F:→ hongyan: 抱歉以为你要多个key的内容 如要query的话就照dd大就行 07/21 15:43
23F:→ hongyan: 你可以先试着print看看rquery,会出现所有list中的dict才 07/21 15:44
24F:→ hongyan: 对 07/21 15:44
25F:推 ddavid: 你先确定你print(news['relatedQueries'])真的有复数笔, 07/21 18:14
26F:→ ddavid: print(news['relatedQueries'][1])真的有东西 07/21 18:14
27F:→ ddavid: 如果根本就没有多笔资料在里面,那可能前面哪边早就有问题 07/21 18:16