当前位置:首页 > NBA资讯 > 正文

edg vs dk直播(edg vs dk直播回放)

《爬行动物100个实用案例》又来了。萌哥昨天看直播了吗?一句话,EDG的斗牛结束了。

T1:我是三连冠耿:我是双料冠军DK:我是去年的世界冠军:我本想以第一个半决赛的身份和你相处,没想到的是疏远。别装了!摊牌!我是今年的世界冠军!

edg vs dk直播(edg dk直播回放)  第1张

攀登数据目标

网站:哔哩哔哩

edg vs dk直播(edg dk直播回放)  第2张

?

edg vs dk直播(edg dk直播回放)  第3张

效果显示

edg vs dk直播(edg dk直播回放)  第4张

?

edg vs dk直播(edg dk直播回放)  第5张

工具使用

开发工具:pycharm开发环境:python3.7、Windows10使用工具包:请求、线程、csv

关键学习内容

常见请求头的反爬json数据的处理csv文件处理

项目理念分析

找到你需要捕捉的视频地址(EDG真棒!!!!)

edg vs dk直播(edg dk直播回放)  第6张

?

edg vs dk直播(edg dk直播回放)  第7张

网址:【S11全球总决赛】11月6日决赛EDG vs DK_ Billibili _英雄联盟

在收集数据时,爬虫首先要找到对应的数据目标地址。可以清楚的看到,当前网页的评论数据是不断变化的,需要找到相应的评论界面,习惯性的寻找动态数据。

edg vs dk直播(edg dk直播回放)  第8张

?

edg vs dk直播(edg dk直播回放)  第9张

数据不在动态数据中,clear 空数据加载新的评论数据,触发加载条件。

edg vs dk直播(edg dk直播回放)  第10张

?

edg vs dk直播(edg dk直播回放)  第11张

加载的数据都在all里,数据清晰后就好处理了。通过请求获取相应的web接口并发送网络请求。

url = 'https://api.bilibili.com/x/v2/reply/main?jsonp=jsonp&next={}&type=1&oid=891511588&mode=3&plat=1&_=1636272184444'.format(i)? response = requests.get(url) print(response.text)xxxxxxxxxxbr
url = 'https://api.bilibili.com/x/v2/reply/main?jsonp=jsonp&next={}&type=1&oid=891511588&mode=3&plat=1&_=1636272184444'.format(i)br?br response = requests.get(url)br print(response.text)

?

数据请求失败。请求头没有添加相应的带有防爬策略的ua,引用的主要是防盗链的请求头措施。在浏览器中请求时无法获得数据,可以获得准确的数据,提取想要的数据信息。

评论的内容评论的时间评论的作者作者的性别作者的个性签名(各位大佬可以根据自己的需求进行自动的采集数据)

在处理json数据时,需要注意的是,json数据前有jQuery 1720892078778784086 _ 1627994582044,可以有规律的进行匹配提取。这里我选择修改url的参数,告诉URL的jQuery 1720892078784086 _ 1627994582044删除。最终的网址是:

https://api.bilibili.com/x/v2/reply/main?jsonp=jsonp&next={}&type=1&oid=891511588&mode=3&plat=1&_=1636272184444xxxxxxxxxxbr
https://api.bilibili.com/x/v2/reply/main?jsonp=jsonp&next={}&type=1&oid=891511588&mode=3&plat=1&_=1636272184444

?

获取数据后保存数据,将数据保存在csv文件中。

def save_data(item): with open('小破站1.csv', "a", newline='', encoding="utf-8")as f: filename = ['content', 'ctime', 'sex', 'uname', 'sign'] csv_data = csv.DictWriter(f, fieldnames=filename) csv_data.writerow(item)?xxxxxxxxxxbr
def save_data(item):br with open('小破站1.csv', "a", newline='', encoding="utf-8")as f:br filename = ['content', 'ctime', 'sex', 'uname', 'sign']br csv_data = csv.DictWriter(f, fieldnames=filename)br csv_data.writerow(item)br?

简单的源代码共享

import requestsimport csv?def save_data(item): with open('EDG牛逼!.csv', 'a', newline='', encoding='utf-8')as f:? filename = ['content', 'uname', 'sign', 'sex'] csv_data = csv.DictWriter(f, fieldnames=filename) # csv_data.writeheader() csv_data.writerow(item)???def get_data(url):? headers = { 'referer': 'https://www.bilibili.com/bangumi/play/ss5852/?from=search&seid=6248919601957945511', 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36', }? response = requests.get(url, headers=headers).json() item = {} for data in response['data']['replies']: item['content'] = data['content']['message'].strip() # print(content) item['uname'] = data['member']['uname'] item['sign'] = data['member']['sign'] item['sex'] = data['member']['sex'] # print(item) save_data(item)?if __name__ == '__main__': for i in range(1, 3): url = 'https://api.bilibili.com/x/v2/reply/main?jsonp=jsonp&next={}&type=1&oid=891511588&mode=3&plat=1&_=1636272184444'.format(i) html = get_data(url)xxxxxxxxxxbr
import requestsbrimport csvbr?brdef save_data(item):br with open('EDG牛逼!.csv', 'a', newline='', encoding='utf-8')as f:br?br filename = ['content', 'uname', 'sign', 'sex']br csv_data = csv.DictWriter(f, fieldnames=filename)br # csv_data.writeheader()br csv_data.writerow(item)br?br?br?brdef get_data(url):br?br headers = {br 'referer': 'https://www.bilibili.com/bangumi/play/ss5852/?from=search&seid=6248919601957945511',br 'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',br 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36',br }br?br response = requests.get(url, headers=headers).json()br item = {}br for data in response['data']['replies']:br item['content'] = data['content']['message'].strip()br # print(content)br item['uname'] = data['member']['uname']br item['sign'] = data['member']['sign']br item['sex'] = data['member']['sex']br # print(item)br save_data(item)br?brif __name__ == '__main__':br for i in range(1, 3):br url = 'https://api.bilibili.com/x/v2/reply/main?jsonp=jsonp&next={}&type=1&oid=891511588&mode=3&plat=1&_=1636272184444'.format(i)br html = get_data(url)

2012,一张卡,一个仁加,一群红衣少年的笑声。2013,一个杰斯,一个扎克,一个支离破碎的梦。2014,螳螂,兰博,摇摇欲坠的基地。2015,一个寡妇,一个恶魔女王,一本永远无法折叠的梅希亚盗魂卷。2016,一个盲僧,一个奥拉夫,一串丢人的数字。2017,一个Kgmo,一个青钢影,赛区绝境中的最后救赎。2018,一个刀妹,一个剑魔,一个至高无上的尊严。2019,一个泰坦,一个盲僧,一只浴火重生的凤凰。020,一个上尉,一个舞剑女,一个杀人无法弥补的遗憾。2021年,一个王子,一个佐伊,一个骑士把大楼撑到了边缘。

0