mas*_*ard 7 python request web-scraping selenium-webdriver
我正在尝试使用 从网站下载一些视频Selenium。
不幸的是,我无法从源下载它,因为视频存储在访问受限的目录中,尝试使用 检索它们urllib,requests或者ffmpeg返回错误403 Forbidden,即使在将我的用户数据注入网站之后也是如此。
我正在考虑完整播放视频并从缓存中存储媒体文件。
\n有可能吗?在哪里可以找到自定义配置文件中的缓存文件夹?如何区分缓存中的文件?
\n编辑:这是我尝试使用的requests
import requests\n\n\ndef main():\n\n s = requests.Session()\n\n login_page = \'<<login_page>>\'\n login_data = dict()\n login_data[\'username\'] = \'<<username>>\'\n login_data[\'password\'] = \'<<psw>>\'\n\n login_r = s.post(login_page)\n\n video_src = \'<<video_src>>\'\n\n cookies = dict(login_r.cookies) #\xc2\xa0contains the session cookie\n\n # static cookies for every session\n cookies[\'_fbp\'] = \'fb.1.1630500067415.734723547\'\n cookies[\'_ga\'] = \'GA1.2.823223936.1630500067\'\n cookies[\'_gat\'] = \'1\'\n cookies[\'_gid\'] = \'GA1.2.1293544716.1631011551\'\n cookies[\'user\'] = \'66051\'\n\n video_r = s.get(video_src, cookies=cookies)\n print(video_r.status_code)\n\n\n\nif __name__ == \'__main__\':\n main()\n\nRun Code Online (Sandbox Code Playgroud)\nprint() 函数返回:
\n\n\n403
\n
这是视频的网络选项卡:
\n\n小智 0
关于video_r = s.get(video_src, cookies=cookies)您是否尝试过流式传输响应?它发送正确的字节范围标头来下载视频。大多数网站都阻止将文件下载为“一个”块。
with open('...', 'wb') as f:
response = s.get(url=link, stream=True)
for chunk in response.iter_content(chunk_size=512):
if chunk: # filter out keep-alive new chunks
f.write(chunk)
Run Code Online (Sandbox Code Playgroud)
如果需要,您可以之前发送一个 head 请求,这样您就可以创建一个进度条,您将从 header 中检索完整的内容长度。
另外,403 是反机器人系统常用的,可能是您的硒被检测到。
| 归档时间: |
|
| 查看次数: |
1256 次 |
| 最近记录: |