谷歌抓取网页视频教程(本次要用到的模块大概思路(免费领取)(组图))
优采云 发布时间: 2022-02-07 11:05谷歌抓取网页视频教程(本次要用到的模块大概思路(免费领取)(组图))
概述
我想很多人第一次接触爬虫,学习的目的就是为了捕捉某些*敏*感*词*姐们的视频、图片或者小说!这应该是大家想学爬虫的动力!今天给大家上一期《攀登*敏*感*词*姐》的完整视频。本来是很严肃的视频,但是想了想还是要实事求是。那我得换成*敏*感*词*姐,整一下!
使用的环境是 Python3.6 和 pycharm。需要安装浏览器驱动(谷歌或者火狐都可以,只要和浏览器版本差不多)。没有的可以加这个群。我会加群免费领取,包括群里免费提供完整的代码和视频教程。
很多小伙伴在学习的过程中,因为没有好的学习资料、学习路线,或者不能及时解决问题,导致学习进度放慢,甚至放弃学习。这里我为你准备了一切,从零基础到实战,全方位的学习路线免费给你,所有学习问题都可以在群里解答,点我免费领取
的
欢迎大家!
这次要使用的模块
requests >>> pip install requests
selenium >>> pip install selenium
re
os
大概的概念
一. 数据源分析
确定需求(我们要抓取什么?)
抖音视频内容
通过开发者工具进行数据包捕获分析
一、(F12/右键勾选打开)选择网络,选择媒体,找到播放地址
二、查找播放地址的来源>>>
爬视频
二. 代码实现流程
发送请求 发送请求视频详情页
获取数据 获取网页源代码数据
解析数据提取视频播放地址和视频标题
下载保存
各模块的作用
import requests # 数据请求 第三方模块 pip install requests
import re # 正则表达式模块
import os # 文件操作模块
import time # 时间模块
from selenium import webdriver # pip install selenium
自动判断是否有文件夹,自动创建,文件夹名可以任意命名。这里我们创建一个名为video的文件夹,你也可以创建一个同名的文件夹,放在代码旁边。
filename = 'video\\' # 文件名字
if not os.path.exists(filename): # 判断如果没有这个文件夹的话
os.mkdir(filename) # 创建这个文件
许多文件在下载后的名称中都有特殊符号。这时候我们需要替换掉这些特殊符号,否则无法保存。
def change_title(title):
pattern = re.compile(r"[\/\\\:\*\?\"\\|\n]") # '/ \ : * ? " < > |'
new_title = re.sub(pattern, "_", title) # 替换为下划线
return new_title
在此步骤中,需要安装浏览器驱动程序。Selenium 可以模拟人类行为来操作浏览器,模拟滑动操作。如果自己翻过来,有多麻烦?验证码没有写进去,需要自己手动传验证码。
def drop_down():
"""执行页面滚动的操作""" # javascript
for x in range(1, 30, 4): # 在你不断的下拉过程中, 页面高度也会变的
time.sleep(1)
j = x / 9
# document.documentElement.scrollTop 指定滚动条的位置
# document.documentElement.scrollHeight 获取浏览器页面的最大高度
js = 'document.documentElement.scrollTop = document.documentElement.scrollHeight * %f' % j
driver.execute_script(js)
实例化浏览器对象
driver = webdriver.Chrome()
访问 url 地址 URL
driver.get('.......')
把括号里的内容换成你要爬的博主,链接我就不放了,免得审核不通过。
让我们截图。这里以他为例。任何知道它的人都会明白。
的
不,我不明白~
怎么找到地址,放到当前页面的链接里?把前面的都复制过来,放在括号里替换……这些点。
返回列表中的元素是对象
lis = driver.find_elements_by_css_selector('div._927ae3b0dd790b5b62eae61c7d2fa0bc-scss > div:nth-child(2) > ul li')
调用 find_element_by_css_selector() 方法
li_url = li.find_element_by_css_selector('a').get_attribute('href')
headers 请求头伪装,user-agent:浏览器的基本信息。
headers = {
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}
response = requests.get(url=li_url, headers=headers)
获取数据 response.text 获取响应正文的文本数据
打印(响应。文本)
通过正则表达式解析数据
正则表达式匹配的内容是一个列表
贪婪模式 [我想要这一切] 非贪婪模式 (?)
title = re.findall(' (.*?)', response.text, re.S)[0]
new_title = change_title(title)
返回是一个列表,没问题。[1]的索引取第一个元素的索引位置为0,第二个元素的索引位置为1。
html_data = re.findall('src(.*?)vr%3D%2', response.text)[1]
解码
video_url = requests.utils.unquote(html_data).replace('":"', 'http:')
print(video_url) 保存数据,response.content(获取响应体的二进制数据),为什么需要获取二进制数据,如果我想以特定格式保存图片/视频/音频/文件,他们都保存为二进制数据。,
video_content = requests.get(url=video_url, headers=headers).content
mode 保存模式,w 为写入,b 二进制模式,wb 以二进制模式保存,模式默认为,r 读取,如重命名 f。
然后看看效果
的
的
的
兄弟们,快冲冲冲!还是新的,只要你去尝试,一定是成功的。如果你还没试过,那我就不说了。文章不明白的可以进群看视频!工具软件有现成的直接管理找吧!