鱼C论坛

 找回密码
 立即注册
查看: 1136|回复: 8

[已解决]爬虫爬视频返回空集

[复制链接]
发表于 2022-3-22 15:07:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import re

import bs4
import requests
url='https://haokan.baidu.com/v?vid=9340172854313612982&tab=recommend&sfrom=recommend'
head={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.82 Safari/537.36'}
resp=requests.get(url,headers=head)
print(resp.text)
t=re.findall(r'http://.*?.mp4',resp.text)
print(t)

请问一下,我想把这个网页的视频全部爬下来,正则表达式也正确,但是结果返回空集,如何解决呀
最佳答案
2022-3-22 15:18:18
本帖最后由 isdkz 于 2022-3-22 15:20 编辑

匹配 http:
t=re.findall(r'http:[^"]*?.mp4',resp.text)

匹配 https:
t=re.findall(r'https:[^"]*?.mp4',resp.text)
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2022-3-22 15:08:18 | 显示全部楼层
我发现我的resp.text爬出来的内容好像不全
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-22 15:18:18 | 显示全部楼层    本楼为最佳答案   
本帖最后由 isdkz 于 2022-3-22 15:20 编辑

匹配 http:
t=re.findall(r'http:[^"]*?.mp4',resp.text)

匹配 https:
t=re.findall(r'https:[^"]*?.mp4',resp.text)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-22 15:54:20 | 显示全部楼层
isdkz 发表于 2022-3-22 15:18
匹配 http:
t=re.findall(r'http:[^"]*?.mp4',resp.text)

t=re.findall(r'https:[^"]*?.mp4',resp.text)
['https:\\/\\/vd4.bdstatic.com\\/mda-nckhek3dbwp00478\\/cae_h264_delogo\\/1647866694456130876\\/mda-nckhek3dbwp00478.mp4', 'https:\\/\\/vd4.bdstatic.com\\/mda-nckhek3dbwp00478\\/cae_h264_delogo\\/1647866694456130876\\/mda-nckhek3dbwp00478.mp4', 'https:\\/\\/vd4.bdstatic.com\\/mda-nckhek3dbwp00478\\/hd\\/cae_h264_delogo\\/1647866692707372253\\/mda-nckhek3dbwp00478.mp4'】
会出现这个\\/
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-22 15:55:32 | 显示全部楼层
isdkz 发表于 2022-3-22 15:18
匹配 http:
t=re.findall(r'http:[^"]*?.mp4',resp.text)

为啥要用[^"]这个啊,表示除了”,其他字符串出现多次,非贪婪模式 ?是这意思吗
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-22 15:59:29 | 显示全部楼层
hunter魔术师 发表于 2022-3-22 15:55
为啥要用[^"]这个啊,表示除了”,其他字符串出现多次,非贪婪模式 ?是这意思吗

你用任意字符的话即使是非贪婪模式,也给你从 https: 一直匹配到 mp4 为止,

哪怕 https 跟 mp4 是在不同链接拿到的,

链接都会有一个双引号,所以我排除双引号可以避免 https 跟 mp4 不是取到的同一个链接
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-22 16:02:40 | 显示全部楼层
hunter魔术师 发表于 2022-3-22 15:54
用t=re.findall(r'https:[^"]*?.mp4',resp.text)
['https:\\/\\/vd4.bdstatic.com\\/mda-nckhek3dbwp004 ...

它的源代码中就是这样的,你可以自己匹配到后替换一下就好,

t=list(map(lambda x: x.replace('\\', ''), re.findall(r'http:[^"]*?.mp4',resp.text)))
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-3-22 16:21:03 | 显示全部楼层
isdkz 发表于 2022-3-22 16:02
它的源代码中就是这样的,你可以自己匹配到后替换一下就好,

t=list(map(lambda x: x.replace('\\', ' ...

大神 啥时候才能达到你这水平
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-22 22:38:57 | 显示全部楼层
hunter魔术师 发表于 2022-3-22 16:21
大神 啥时候才能达到你这水平

一步一步来,要不了多久的
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-29 14:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表