-
B站爬虫
2016-09-07 14:38:58简单啊的B站爬虫,送上代码: python版本:2.7 #coding:utf-8 __author__ = 'zhengjinwei' import sys reload(sys) sys.setdefaultencoding('utf-8') from lib import spider from lib import fileWriter import ...简单啊的B站爬虫,送上代码:
python版本:2.7
#coding:utf-8 __author__ = 'zhengjinwei' import sys reload(sys) sys.setdefaultencoding('utf-8') from lib import spider from lib import fileWriter import time import datetime import os import random class BiZhanSpider: def __init__(self,userAgent): self.spider = spider.Spider(userAgent) self.users = {} self.curFilePath = self.cur_file_dir() def cur_file_dir(self): #获取脚本路径 path = sys.path[0] #判断为脚本文件还是py2exe编译后的文件,如果是脚本文件,则返回的是脚本的目录,如果是py2exe编译后的文件,则返回的是编译后的文件路径 if os.path.isdir(path): return path elif os.path.isfile(path): return os.path.dirname(path) #get user info specified def getUserSex(self,userUrl,mid,t): # print userUrl,mid,t import json rep = self.spider.postHttp(userUrl,json.dumps({mid:mid,"_":t})) # print rep def getRdv(self): v = random.randint(0,1000) ret = "" if v >= 0 and v < 10: ret = "00"+str(v) elif v >= 10 and v < 100: ret = "0"+str(v) else: ret = str(v) return ret def getFansApiUrl(self,siteUrl): tempStr = siteUrl.replace("http://space.bilibili.com/","") tempStr = tempStr.split("/") mid = str(tempStr[0]) pageIndex = str(tempStr[4]) curTimeStamp = str(int(time.mktime(datetime.datetime.now().timetuple()))) rdv = self.getRdv() t = curTimeStamp+rdv fansUrl = "http://space.bilibili.com/ajax/friend/GetFansList?mid="+mid+"&page="+pageIndex+"&_="+t return fansUrl,mid,t def go(self,pageUrl): fansUrl,mid,ts= self.getFansApiUrl(pageUrl) contents = self.spider.getRawContent(fansUrl) userInfoList = [] import json t = json.loads(contents) if t.has_key('data') == True: data = t['data'] if data.has_key('list') == True: list = data['list'] # print list if len(list): userInfoUrl = "http://space.bilibili.com/ajax/member/GetInfo" for i in range(0,len(list)): userName = list[i]['uname'] fid = list[i]['fid'] sex = self.getUserSex(userInfoUrl,fid,ts) print userName,fid # userUrl = "http://space.bilibili.com/"+str(fid)+"/#!/index" # # if sex != -1: # userInfo = {userName:userName,sex:sex} # userInfoList.append(userInfo) # else: # pass else: pass else: pass else: pass demo = BiZhanSpider('Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko') siteUrl = u"http://space.bilibili.com/2019740/#!/fans/fans/" demo.go(siteUrl)
注意:B站的信息是动态的,需要用fireDebug 查到重定向后的URL去获取列表,详细请看接口:
getFansApiUrl
上面用的lib库请参考:贴吧爬虫
-
绝对有效的B站爬虫
2020-04-07 22:39:32B站爬虫关于爬虫B站爬虫 关于爬虫 之前学习爬虫的时候,研究过如何爬一些知名网站,在这里就先说爬B经验(第一次写博客,可能有一些不好的地方,见谅)。 B站爬虫 B站非vip视频爬虫...关于爬虫
之前学习爬虫的时候,研究过如何爬一些知名网站,在这里就先说爬B经验(第一次写博客,可能有一些不好的地方,见谅)。
B站爬虫
B站非vip视频爬虫(https://www.bilibili.com/video/BV1KZ4y1j7rP):
1.进入b站右键打开源代码;
2.查找视频url,在源代码中视频网址是以键值对的方式来显示的,而键一般为"url",“baseUrl”,"backupUrl"这三种,所以查找看有没有以他们开头的键值对,而值就是这个视频的网址,但是如果访问是不成功的,因为需要携带一些参数
3.再次进入b站打开调试模式(F12);
4. 进入Network,选择其中一个有cookie或者referer的请求;
5. 打开代码填入数据,其中需要cookie,referer和网站的url,但是url只能取?前面的部分,如:(https://www.bilibili.com/video/BV1KZ4y1j7rP?spm_id_from=333.851.b_7265706f7274466972737432.8)/(https://www.bilibili.com/video/BV1KZ4y1j7rP);import requests import re import random class BLBL(object): def __init__(self, url, cookie, referer): # 需要爬取的网页前缀 例如:https://www.bilibili.com/video/av49035382 ?from=search&seid=1058195128616882249 self.base_url = url # cookie内容 self.cookie = cookie # referer内容 self.referer = referer # 请求头信息 self.accept = 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3' self.accept_Encoding = 'gzip, deflate, br' self.accept_Language = 'zh-CN,zh;q=0.9,en;q=0.8' self.user_agent = "User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-us) AppleWebKit/534.50 (KHTML, like Gecko) " def html(self): # 访问起始网页需添加的请求头,不加的话,得不到完整的源代码(反爬) base_headers = { 'Accept': self.accept, 'Accept-Encoding': self.accept_Encoding, 'Accept-Language': self.accept_Language, 'Cache-Control': 'max-age=0', 'Connection': 'keep-alive', 'Cookie': self.cookie, 'Host': 'www.bilibili.com', 'Referer': self.referer, 'Upgrade-Insecure-Requests': '1', 'User-Agent': self.user_agent } # 请求网页 base_response = requests.get(self.base_url, headers=base_headers) print(base_headers) # 获取网页html代码 html = base_response.text # print(html.headers) return html def xin_xi(self, html): print(html) try: # 获取视频名称 video_name = re.search('<title>(.+)</title>', html, re.S).group(1) + '.flv' except: # 如果获取失败,就随机一个名字 video_name = str(random.randint(100000,1000000))+'.flv' print(video_name) # 获取视频链接 download_url = re.search(r'("url":"|"baseUrl":"|"backupUrl":\[")(.+?)("|"])', html, re.S).group(2) print(download_url,111) # 获取主机信息 host = re.search(r'//(.+\.com)', download_url, re.S).group(1) print(host) return video_name, download_url, host def video(self, html): # 获取视频名称,视频网址,主机 video_name, download_url, host = self.xin_xi(html) # 请求视频下载地址时需要添加的请求头 download_headers = { 'User-Agent': self.user_agent, 'Referer': self.referer, 'Origin': 'https://www.bilibili.com', 'Host': host, 'Accept': self.accept, 'Accept-Encoding': self.accept_Encoding, 'Accept-Language': self.accept_Language } a = ['1.195.11.157:21158', '121.20.53.252:15060', '125.111.118.224:19365', '121.230.211.50:18537', '106.226.239.28:20426', '106.9.171.20:20621', '220.248.157.204:18528', '117.81.173.226:17273', '171.12.176.88:21839', '125.105.49.23:20986' ] proxies = {'http':a[random.randint(0,len(a)-1)], "https":a[random.randint(0,len(a)-1)]} # 获取视频资源,并写入文件 with open(video_name, 'wb') as f: f.write(requests.get(download_url, headers=download_headers, stream=True, verify=False).content) def run(self): html = self.html() self.video(html) print('爬取成功') if __name__ == '__main__': url = "https://www.bilibili.com/video/BV1KZ4y1j7rP" cookie = "_uuid=9278F00B-6365-D500-55DB-4DAADCB6850711243infoc; buvid3=E14FC4C1-2188-4581-97D3-EFACEFCF8D58155840infoc; LIVE_BUVID=AUTO8115808077743891; CURRENT_FNVAL=16; rpdid=|(~umm~mm|l0J'ul)|)|~)kR; CURRENT_QUALITY=80; sid=bg12t41s; DedeUserID=18705478; DedeUserID__ckMd5=8313997e1074a9e4; SESSDATA=5fdfa014%2C1600955523%2Cff5c1*31; bili_jct=7eb850edc6b66ac4401f3d186bb1db4f; PVID=1; bsource=seo_baidu" referer = "https://www.bilibili.com/video/BV1KZ4y1j7rP?spm_id_from=333.851.b_7265706f7274466972737432.8" blbl = BLBL(url, cookie, referer) blbl.run()
- 运行代码如果打印爬取成功那么就完成了;
- 代码还需要运用requests,re,random模块,没有的话自行安装,视频爬取后是flv后缀结尾,可以下载爱奇艺万能播放器来播放,可能打开以后显示只有5秒,其实是完整的;
- B站vip视频普通用户是暂时没办法爬,普通用户打开vip视频和会员用户打开vip视频页面显示的源代码不一样,如果你是会员用户那么代码也能正常使用,还是只要替换url,cookie和referer就行。
如果各位喜欢的话,下次我发布一篇爱奇艺,腾讯的爬虫.
-
bilibilipacks:B站爬虫-源码
2021-02-11 21:01:47胆胆包B站爬虫 用NSoup解析html 因为特殊限制,所以UA需要自己写,所以自己写了个获取html的函数 官方QQ群:741963265 为什么不用Python? Python效率太低了,他毕竟是脚本语言,而C ++成本和时间耗费又过多,折中选... -
B站爬虫:爬取弹幕及全站热门视频信息
2020-08-06 09:43:04一、前言 以前我也想当一个业余 up 主玩一玩,...我把 B 站爬虫的代码分享一下吧! 二、热门爬虫 B 站有热门排行榜,常规爬虫流程就可以爬到。就直接上代码!import re import time import random import requests一、前言
- 以前我也想当一个业余 up 主玩一玩,剪辑视频有点痛苦啊!还发现给视频命名和选择封面真的是一件
“艺术活”
于是就写了爬虫寻思着爬些热门视频信息学习学习命名的“技术”
,想起以前在创新工厂参观学习的时候看到几位大佬使用 NLP 技术写首古诗或者写幅对联,那我可不可以做整个给视频命名的,这需要大量的样本数据,因为是个人感觉有意思,所以优先级比较低。我把 B 站爬虫的代码分享一下吧!代码难度也不大,有用的自取。
二、热门爬虫
- B 站有热门排行榜,
常规爬虫流程
就可以爬到。就直接上代码!import re import time import random import requests import pandas as pd class SpiderBStand(object): def __init__(self): self.header = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; WOW64) " "AppleWebKit/537.36 (KHTML, like Gecko)" " Chrome/69.0.3497.100 Safari/537.36" } self.urls = [ 'https://www.bilibili.com/ranking/all/0/0/3', 'https://www.bilibili.com/ranking/all/1/0/3', 'https://www.bilibili.com/ranking/all/168/0/3', 'https://www.bilibili.com/ranking/all/3/0/3', 'https://www.bilibili.com/ranking/all/129/0/3', 'https://www.bilibili.com/ranking/all/4/0/3', 'https://www.bilibili.com/ranking/all/36/0/3', 'https://www.bilibili.com/ranking/all/188/0/3', 'https://www.bilibili.com/ranking/all/160/0/3', 'https://www.bilibili.com/ranking/all/119/0/3', 'https://www.bilibili.com/ranking/all/155/0/3', 'https://www.bilibili.com/ranking/all/5/0/3', 'https://www.bilibili.com/ranking/all/181/0/3' ] self.labels = ['全站', '动画', '国创相关', '音乐', '舞蹈', '游戏', '科技', '数码', '生活', '鬼畜', '时尚', '娱乐', '影视'] self.re1 = re.compile('<img alt="(.*?)" src=') def spider_data(self, url): titles = list() response = requests.get(url, headers=self.header).text df = self.re1.findall(response) titles.extend(df) content = pd.DataFrame() content["标题"] = titles return content def run(self): data_all = pd.DataFrame() for _url, _label in zip(self.urls, self.labels): print("正在爬取", _label) result = self.spider_data(_url) result['所属'] = _label result['排名'] = list(range(1, len(result) + 1)) data_all = pd.concat([data_all, result]) time.sleep(random.uniform(2, 4)) data_all.to_csv("./biiStandData.csv", encoding="utf_8_sig") if __name__ == '__main__': spider = SpiderBStand() spider.run()
三、弹幕爬虫
- 基本需要两个步,首先视频页面 URL 组合接口 URL 得到视频 CID
- 通过 CID 获取视频的弹幕信息(GitHub 有很多大神找出的接口)
import re import json import requests class SpiderBullet(object): def __init__(self, video_url): self.video_url = video_url def run(self): """ 执行方法 :return: """ info_url = self.set_video_url() final_url = self.settle_url(self.get_pages(info_url)) print('得到 URL:', final_url) df_nol = self.get_pages(final_url) self.settle_df(df_nol) def set_video_url(self): """ 获取视频的 cid JSON数据 :return: cid URL """ cid_url = 'https://api.bilibili.com/x/player/pagelist?bvid={}&jsonp=jsonp' video_temp = str(self.video_url).split('/')[-1] print('解析 URL:', cid_url.format(video_temp)) return cid_url.format(video_temp) def save(self): pass @staticmethod def get_pages(url_info): """ 负责请求页面 :param url_info: :return: """ response = requests.get(url_info) content = response.content.decode() return content @staticmethod def settle_url(df): """ 过滤数据,得到 URL :param df: :return: """ final_url = "https://api.bilibili.com/x/v1/dm/list.so?oid=%s" temp_dict = json.loads(df) cid = temp_dict['data'][0]['cid'] return final_url % cid @staticmethod def settle_df(df): """ 过滤数据,得到弹幕列表 :param df: :return: """ pattern = re.compile('<d.*?>(.*?)</d>') bullet_list = pattern.findall(df) return bullet_list if __name__ == '__main__': video_url = 'https://www.bilibili.com/video/BV1854y1B7L5' spider = SpiderBullet(video_url) spider.run()
四、爬虫过程
- B 站热门爬虫直接运行就可以了,程序会自动保存数据。
- 弹幕爬虫:需要将自己想要爬取视频的 URL 替换到 video_url 即可,然后 save 方法留给各位自由发挥吧。
- 以前我也想当一个业余 up 主玩一玩,剪辑视频有点痛苦啊!还发现给视频命名和选择封面真的是一件
-
简单b站爬虫
2018-12-18 11:00:10这是一篇关于b站的爬虫。 爬了一点关于一些番剧的短评,做了一图两表。 找到你要爬到番剧(这里以刀剑为例) 1.找到这样一个界面,点击到短评。 2.点F12进入开发者模式,然后点network,all。 3.在搜索框输入...这是一篇关于b站的爬虫。
爬了一点关于一些番剧的短评,做了一图两表。找到你要爬到番剧(这里以刀剑为例)
1.找到这样一个界面,点击到短评。
2.点F12进入开发者模式,然后点network,all。
3.在搜索框输入list。
4.点击搜到的list?开头的链接,然后点Preview。这就是第一个短评列表
5.在页面上继续下滑,就会出现第二,第三个。(之所以会这样是因为,b站的短评是动态加载的)
第一步找到所有的短评链接
点击Headers,拿到url,与response headers。
这样就获得了第一条短评,那如何获得第二条呢?
首先我们观察一下他的前三条URL链接
https://bangumi.bilibili.com/review/web_api/short/list?media_id=130412&folded=0&page_size=20&sort=0我们能很容易看出,这三条链接前面都是一样的,只有后面的cursor是不一样的,也就是说,只有我们获得cursor我们就能获得所有的短评链接。那问题来了,我要如何获得这些cursor。
我们点击第一个list,然后在右边Ctrl+F,弹出搜索框,在里面搜到的cursor我们就能找到第二条链接的cursor了。
这样我们就能从第一个链接爬到最后一个了。爬虫开始
找到链接后,这一步就很简单了。
大家可以先自己写一下
代码在这:import requests import traceback import json from bs4 import BeautifulSoup head = """ Accept:*/* Accept-Encoding:gzip, deflate, br Accept-Language:zh-CN,zh;q=0.8 Connection:keep-alive Cookie:_uuid=D8921E95-D8CD-BFC6-3BC0-D1F6043F776887304infoc; LIVE_BUVID=AUTO5415414913832945; sid=9y98lpeg; fts=1541502024; buvid3=661DEC67-025B-49CD-9571-B571D8FE72F9115923infoc; rpdid=olqmokllowdosposwiwww; UM_distinctid=166fddf7b4348b-059ec053287482-36624209-144000-166fddf7b4444; bp_t_offset_37429101=190003340221487243; CURRENT_FNVAL=16; stardustvideo=0; DedeUserID=128668516; DedeUserID__ckMd5=4e3d240a24288b0c; SESSDATA=1d112e0c%2C1546603364%2C33f029c1; bili_jct=992ec11646273bfe1fbcdc06f0eef927; CURRENT_QUALITY=112; BANGUMI_SS_25739_REC=250469; BANGUMI_SS_24638_REC=257435; BANGUMI_SS_25733_REC=251085; BANGUMI_SS_2543_REC=258189; Hm_lvt_4e5bdf78b2b9fcb88736fc67709f2806=1543314834,1543365468,1543459162,1544434299; bp_t_offset_128668516=196106067844789385; _dfcaptcha=8a97e23aafd3dbeedd17b19fbedf3b62 Host:api.bilibili.com Referer:https://www.bilibili.com/bangumi/play/ss24588/?from=search&seid=3488276259830397637 User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.104 Safari/537.36 """ # 这是将headers的string形式转成字典形式(很方便的) def get_html_text(url): r = requests.get(url) try: r.raise_for_status() r.encoding = "utf-8" return r.text except: traceback.print_exc() return "" def save_data(msg): with open("message.csv", "a", encoding="utf-8") as f: f.write(",".join(msg) + "\n") # 追加存储,如果出现错误,可能需要删除原文件。 # 文件存储在代码位置。 def main(urlbase): cnt = 0 #来记录一爬了多少条评论 total = 1 # total是总共的短评条数 url = "" while cnt < total: # 评论达到总评论条数就退出 if not url: url = urlbase """ 这一步只是方便对url改写,方法可以有很多 """ # print(url) html = get_html_text(url) js = json.loads(html) # 因为这个链接给我们的是个json的数据格式,直接用就好,不必用BeautifulSoup再加载 # print(js) # print(js["result"]) L = len(js["result"]["list"]) # 虽说每个列表里都只有20条信息,但到了最后一个列表是不一定的,所以这里要获取list的长度 for i in range(L - 1): single_msg = [] uname = js["result"]["list"][i]["author"]["uname"] ctime = js["result"]["list"][i]["ctime"] likes = js["result"]["list"][i]["likes"] score = js["result"]["list"][i]["user_rating"]["score"] content = js["result"]["list"][i]["content"] uname = uname.replace(",", ",") content = content.replace(",", ",") """ 这里把英文逗号换成中文逗号,是为了存储。因为要存储成csv格式,为了避免出错。如果不用csv存储,就无须这一步。 """ single_msg.append(uname) single_msg.append(str(score)) single_msg.append(content) single_msg.append(str(ctime)) single_msg.append(str(likes)) save_data(single_msg) #获取cursor cursor = js["result"]["list"][L - 1]["cursor"] # save_data(cursor) #对链接进行修改 url = urlbase + "&cursor=" + str(cursor) cnt += 20 total = js["result"]["total"] #第一条列表链接 url = "https://bangumi.bilibili.com/review/web_api/short/list?media_id=130412&folded=0&page_size=20&sort=0" main(url)
total是之前没有说到的
这东西有什么用呢?
因为你要爬取所有的评论,那什么时候结束就成了一个问题
既然是爬取所有的评论,当然是爬完了结束,那什么时候是爬完了,这就是total的意义。控制结束
total的位置也在list里,很容易看到的。然后就是两表一图了
这东西自己看看就好,一个简单的数据分析。
from pyecharts import Line import time with open("message.csv", "r", encoding="utf-8") as f: single = {} id = set() for p in f: p = p.split(",") t = time.strftime("%Y-%m-%d", time.gmtime(eval(p[3]))) single[t] = single.get(t, 0) + 1 id.add(t) # print(single) x = [] y = [] t = sorted(id) # print(t) for i in t: x.append(i) y.append(single[i]) line = Line("评论时间分布") line.use_theme("dark") line.add("评论时间分布", x, y, is_smooth=False, is_fill=True, symbol=None, area_opacity=0.4) line.render("picture_line.html")
from pyecharts import Pie score = [] with open("message.csv", "r", encoding="utf-8") as f: score_dict = {} for s in f: s = s.split(",") k = s[1] score_dict[k] = score_dict.get(k, 0) + 1 # print(score_dict) for s in range(2, 12, 2): score.append(score_dict[str(s)]) # print(score) attr = ["一星", "二星", "三星", "四星", "五星"] pie = Pie(title="评分", title_pos=(0, 0), width=600) pie.add("评分", attr, score, center=(50, 50), is_random=False, radius=[45, 75], rosetype="center", is_legend_show=True, is_label_show=True) pie.render("Pie_picture.html")
效果图:
pyecharts这个库安一个就好,百度一下,有官网,有中文文档。
如果不明白什么是csv的我说一下,就是每个词之间用英文逗号隔开,最后有个换行符。(说的可能不太清楚,不懂百度吧)import wordcloud import jieba txt = "" with open("memssage.csv", "r", encoding="utf-8") as f: for c in f: try: c = c.split(",") txt += c[2] except: txt += "" text = "" text += " ".join(jieba.cut(txt, cut_all=False)) font_path = "msyh.ttc" stop_words = set("") stop_words.update(['一部', '非常', '完结 撒花', '真的', '我们', '一个', '这部', '这个', '感觉', '完结', '还是', '就是', '还有', '但是', '觉得', '最后', '没有', '看到', '作品', '有点', '知道', '虽然', '为了', '什么', '撒花', '这么', '番剧', '一集', '第三季', '第一集', 'tm', '啊啊啊', '时候', '不是', '已经', '这番']) wc = wordcloud.WordCloud(font_path=font_path, stopwords=stop_words, # max_font_size=50, background_color="black", width=1000, height=600, margin=2) wc.generate(text) process_word = wordcloud.WordCloud.process_text(wc, text) sort = sorted(process_word.items(), key=lambda e: e[1], reverse=True) print(sort[:50]) """ 输出前50个出现再多的词,有不想要的,请自行加入stopwords库里 """ wc.to_file("Wordcloud.png")
效果图:
做了张词云,挺丑的。本人第一次写博客,有什么错误,或用词不当。
希望大家不吝赐教。 -
Scrapy:b站爬虫之抓包过程
2020-02-17 16:45:32Scrapy:b站爬虫之抓包过程 一、内容说明 一共爬取八个数据,可分为四项: 1、标题(直接xpath,不用抓包) 2、点赞、投币、收藏 3、在线观看人数 4、弹幕内容、时间、发送时间 二、抓包过程 1、点赞,投币,收藏 1、... -
【初码干货】记一次分布式B站爬虫任务系统的完整设计和实施
2019-10-08 00:30:46【初码文章推荐】 程序员的自我修养 Azure系列文章 ...今天带来一个有意思的东西-分布式B站爬虫任务系统 这个小玩意源于上周在研究Azure的时候,发现云服务厂商都在推荐轻量级的存储... -
记一次分布式B站爬虫任务系统的完整设计和实施
2017-06-09 07:24:42今天带来一个有意思的东西-分布式B站爬虫任务系统 这个小玩意源于上周在研究Azure的时候,发现云服务厂商都在推荐轻量级的存储队列服务,用来取代原有的比较重的消息队列服务,具体来说,比如阿里云就推荐使用... -
B站爬虫与数据分析汇总篇 | 目录索引
2021-02-05 16:41:46关于B站的爬虫以及数据分析,我们已经分享了好几篇啦~ 这里做个汇总,所有博文链接如下,持续更新~ 序号 博文标题 1 Python爬取B站弹幕+Gephi绘制人物画像 2 B站热门视频信息爬取(小白版) 3 B站热门... -
一种方便快捷的B站爬虫方法
2020-11-20 10:56:06最近需要用到B站上的一些数据,例如弹幕和评论,无意间发现B站大佬在github开源了一个B站API调用库,使用文档详细,有人更新维护。 GitHub 地址为:https://github.com/Passkou/bilibili_api 目前已经更新到了v... -
分享一个B站爬虫(爬取视频信息相关数据)
2019-07-23 23:22:51因为知道B站技术还是不错的。可能有难度。 分析 抱着看一看,玩一玩的态度,开始B站分析之旅。由于时间精力有限,不做太详细说明。 B站的信息。第一想到肯定不可能直接渲染,只有比较old的网站现在才会渲染到html。... -
Python B站爬虫 评论区性别统计
2020-05-09 16:01:07import requests import json import time #bv号转av号 table='fZodR9XQDSUm21yCkr6zBqiveYah8bt4xsWpHnJE7jL5VG3guMTKNPAwcF' tr={} for i in range(58): tr[table[i]]=i s=[11,10,3,8,4,6] ... -
我在故宫修文物大电影B站爬虫
2018-10-26 23:45:031、b站网址:https://www.bilibili.com/bangumi/play/ss11936/ 2、弹幕网址:http://comment.bilibili.com/13306224.xml,13306224为cid 3、用python 编写爬虫,并进行文本分析,生成词云。 import urllib.... -
写一个b站爬虫(思路)
2020-05-27 17:21:44part 0 安装 scrapy, requests part 1 信息获取 打开番剧索引链接(https://www.bilibili.com/anime/index/) F12控制台,选中NETWORK,来到xhr文件,我们可以找到了存放番剧json的地方 -
B站爬虫之-----梨视频
2020-08-16 23:28:482020.8.16 B站爬虫之-----梨视频 今天在B站上看的一个老师讲的Xpath神器,并且做了个小实例,了解到了Xpath的强大! 首先,要想使用xpath,就得导入进来: from lxml import etree 出现不能识别的:加上/text()就... -
打包 pyqt5_教你用Python+PyQt5制作一款带有界面的B站爬虫小程序
2021-01-05 03:30:40本文将用Python结合PyQt5制作一款B站视频数据爬虫小程序,可以通过输入关键字、页码以及选择存储路径后,下载相应的数据,效果如下:以下将详细介绍这个GUI工具的制作方法,如需本文完整代码,后台回复GUI。... -
-
基于Flink+Hudi构建企业亿级云上实时数据湖教程(PC、移动、小
-
第1关上 将错就错.mp4
-
市场-源码
-
springcloud-gateway源码-(十)Ribbon负载均衡导图
-
洛谷P1420 最长连号经典解法
-
Linux基础入门系列课程
-
洛谷P5725 【深基4.习8】求三角形经典解法
-
洛谷P5724 【深基4.习5】求极差经典解法
-
基于python的dango框架购物商城毕业设计毕设源代码使用教程
-
工程制图 AutoCAD 2012 从二维到三维
-
2019年下半年 软件评测师 上午试卷 综合知识 软考真题【含答案和答案解析】
-
PPTP_NNN 服务生产环境实战教程
-
-191-4-源码
-
基于电商业务的全链路数据中台落地方案(全渠道、全环节、全流程)
-
uniapp下拉刷新
-
智能停车场云平台(附vue+SpringBoot前后端项目源码)
-
LeetCode 867. 转置矩阵
-
电影记录-源码
-
自适应极限学习机
-
学业辅导-递归