龙空技术网

Python爬虫实战:爬取任意你想看的视频

写Python的小可爱 55

前言:

而今看官们对“python3爬取网页”大概比较珍视,同学们都需要学习一些“python3爬取网页”的相关知识。那么小编也在网络上搜集了一些关于“python3爬取网页””的相关知识,希望兄弟们能喜欢,你们一起来学习一下吧!

大家好,今天小编就以B站为例,带大家爬取视频,学会之后你也能爬取你想要的视频!或不多说,上正文

爬虫用的好,牢饭吃的早!

本文仅作知识分享,切勿用于违法行为!

下载仓库

git@github.com:inspurer/PythonSpider.git

或者直接下载:

替换

随便打开一个b站的界面,比如

将url复制到代码中去,运行代码,稍等一会儿,上述图中的视频就被下载下来了。

How to Code分析网页源码

按f12浏览器开发者工具 ,通过一番审查,我们定位到视频的url在网页源代码的位置如下:

window.__playinfo__={"from":"local","result":"suee","quality":32,"format":"flv480","timelength":408884,"accept_format":"flv720,flv480,flv360","accept_description":["高清 720P","清晰 480P","流畅 360P"],"accept_quality":[64,32,15],"video_codecid":7,"video_project":true,"seek_param":"start","seek_type":"offset","durl":[{"order":1,"length":408884,"size":42782550,"ahead":"EhA=","vhead":"AWQAHv/hAB5nZAAerNlA2D3n//AoACfxAAADAAEAAAMAMA8WLZYBAAVo6+zyPA==","url":";,"backup_url":[";]}]}

最后的url就是我们想要的结果。

如果在浏览器中查找不方便的话,我们可以把通过代码把网页源码输出到本地

response = requests.get(url=';, headers= self.getHtmlHeaders)        print(response.status_code)        if response.status_code == 200:            print(response.text)

为了伪装成浏览器,我们需要在reqests添加Headers

这个Headers需要我们去浏览器中手动获取

切换到NetWork标签下,再选择Headers,

   self.getHtmlHeaders={        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36',        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8',        'Accept-Encoding': 'gzip, deflate, br',        'Accept-Language': 'zh-CN,zh;q = 0.9'    }

这里只选择了几个关键的

解析得到视频地址

根据上一步分析,我们得到了网页的源码,并在源码中定位到了视频地址,接下来,我们就用代码自动获取这个地址了

#用正则、json得到视频url;用pq失败后的无奈之举pattern = r'\<script\>window\.__playinfo__=(.*?)\</script\>'result = re.findall(pattern, html)[0]temp = json.loads(result)#temp['durl']是一个列表,里面有很多字典#video_url = temp['durl']for item in temp['data']['durl']:	if 'url' in item.keys():		video_url = item['url']

顺便获取下视频的名字:

#用pq解析得到视频标题doc = pq(html)video_title = doc('#viewbox_report > h1 > span').text()然后组合返回下:

然后组合返回下:

return{ 'title': video_title, 'url': video_url }
下载视频

通过在开发者工具中搜索关键词,比如上面得到的视频url,我们可以定位到在浏览器中真正下载视频的请求在哪

然后把它的Headers添加到reqests中,就可以下载视频了

 with open(filename, "wb") as f: 	 f.write(requests.get(url=url, headers=self.downloadVideoHeaders, stream=True, verify=False).content)

你下载的视频在本地播放不了,请不要试图修改源代码中保存文件的格式由.flv改成.mp4,因为b站的视频本来就是flv格式的,需要用特殊的视频播放器播放,这里推荐一个无毒无害的KMPlayer,链接: 提取码:4l11

结尾

最后多说一句,小编是一名python开发工程师,这里有我自己整理了一套最新的python系统学习教程,包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编,并在后台私信小编:“01”即可领取。

本文的文字及图片来源于网络加上自己的想法,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。

标签: #python3爬取网页 #python爬虫模拟浏览器 #python爬取新闻网站内容代码 #python浏览器读取 #python如何打开网页