通过id 动态显示title内用_python爬虫—爬取b站APP视频信息(通过fiddler抓包工具)...

原创不易,有用记得转发哦!~

点击上方"Python大数据与SQL优化笔记"关注

1. 先看效果图,随便抓的信息

091df0a7041e06d4458943cfd004a31c.png

f5246582cf0d1dbe9bd6dcdbf1bcbef7.png

2. 解析 ,fiddler抓包工具的配置大家自己百度吧,教程都很详细

3. 打开fiddler和模拟器,在模拟器打开哔哩哔哩软件,fiddler我是通过查找分析之后之后过滤的域名

c5f4156a0fcc65d184cc8ef3215fdc98.png

4. 我们通过打开b站的相应版块,然后进行往下翻页之后,fiddler就会根据我之前选择过滤的域名给我标黑

136273429554fa12477bb5ddbb64827e.png

5. 我们点开其中一条标黑的url,然后和b站软件的进行对比,发现我们需要的信息都可以抓取出来

7345e2e5a82ca76d08330b28bb799b66.png

6. 我们可以通过这两条url的对比,查找出不同的地方,经过我的测试,pn代表的是页码,后面红框打叉的地方我们可以不要,这样我们就可以实现翻页了

0bd37824ce97ff22b075afe6a0779d8a.png

7. 需要注意的是我们需要无视ssl安全证书,也就是在requests那里加一个verify=False,这个很重要,不加的话就访问不了url的,返回的数据是json格式,所以大家都懂怎么操作了

841f0c167e81b22ad5aa4e45d134868b.png

8. 大家想要什么数据自己去找,当然其中的数据代表什么也需要大家自己去想了

0ab381cf4b96ad1f57980dcf3b2a434e.png

9. 再说一下,翻页到什么时候就到底了呢,通过观察我发现,当到底部的时候,json数据里面的data为空,所以我们只要判断json里面的data是否

为空做为判断是否到达底部

9e93595e2480ac5445a79c40d48422e6.png

10. 完整代码附上

import requestsimport jsonimport csvimport time# 构建请求头headers = {    # 'Buvid': 'XZ512D1509193D98B13705F88F4266CFF9B32',    'User-Agent': 'Mozilla/5.0 BiliDroid/5.40.0 (bbcallen@gmail.com)',    # 'Device-ID': 'Lk16QnVEfRt_TnxEOEQ4DDgNPQw9Dzo',    'Host': 'app.biliapi.net',    'Connection': 'Keep-Alive',    # 'Accept-Encoding': 'gzip',}# 声明一个列表存储字典data_list = []def start_spider():    page = 1    while True:        time.sleep(1)        url = 'https://app.biliapi.net/x/v2/region/show/child/list?appkey=1d8b6e7d45233436&build=5400000&channel=360' \              '&mobi_app=android&order=view&platform=android&pn={}&ps=20&rid=33&tag_id=0'.format(page)        page += 1        resp = requests.get(url, headers=headers, verify=False)        json_data = resp.json()        # 先取出所需信息的键值对,下面是一个列表,列表存储的是我们所需要的信息        datas = json_data.get('data')        # 如果数据存在就抓取,否则就退出        if datas:            # 遍历            for data in datas:                # 标题                title = data.get('title')                # up主名字                name = data.get('name')                # 播放数                play = data.get('play')                # 评论数                duration = data.get('duration')                # 声明一个字典存储数据                data_json = {}                data_json['title'] = title                data_json['name'] = name                data_json['play'] = play                data_json['duration'] = duration                data_list.append(data_json)                print(data_json)        else:            breakdef main():    start_spider()    # 将数据写json文件    with open('data_json.json', 'a+', encoding='utf-8-sig') as f:        json.dump(data_list, f, ensure_ascii=False, indent=4)    print('json文件写入完成')    # 将数据写入csv文件    with open('data_csv.csv', 'w', encoding='utf-8-sig', newline='') as f:        # 表头        title = data_list[0].keys()        # 声明writer对象        writer = csv.DictWriter(f, title)        # 写入表头        writer.writeheader()        # 批量写入数据        writer.writerows(data_list)    print('csv文件写入完成')if __name__ == '__main__':    main()

--------------------- 


作者:python小爬虫
原文:https://blog.csdn.net/weixin_44024393/article/details/89341389

------------------------------------------------------------------------------------

点击关注有百G视频教程大礼包送给你哦!~

福利

加小编微信拉你入群学习

请注明:加群,否则不会通过哦

微信:pythonislover88

91c85d89b5e0f5d66e245bed1ceab6fd.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值