[全球爬虫论坛] python获取的网页和浏览器的结果不一致

61次阅读

共计 2045 个字符,预计需要花费 6 分钟才能阅读完成。

根据 32 楼 mjj 提醒, 使用 http.cliens 是可以正常获取页面的, 但是使用 requests 就不行了, 用的同一套 proxies 和 headers….,有大佬一起研究下是什么原因吗?我就想用 requests 来爬

————————————————————————————————-

最近想冲刺一下考研, 所以就上去 P 站看考研的视频 (咳咳咳)
使用 python 获取网页源码的时候发现用 re 匹配不到结果
最后我把 python 爬下来的内容用浏览器打开看看, 发现直接提示
no valid source are available for the video
了, 加了 cookie 和 UA 也是一样, 代理和浏览器用的是同一个, mjj 有啥解决思路嘛?

地址: cn.po 删 rnhub.com/view_video.php?viewkey=ph620dd32bd1ec4

p 站程序员把 mp4 完整视频的链接放在了 html 页面里并赋值为 media_4, 只要把这个值提取出来就可以拿到视频完整直链 (非 m3u8 切片), 但是现在请求下的页面有问题, 找不到这个值, 这个值不是由 JS 生成的, 是直接放在 html 页面的

正常的返回网页结果应该有 media_4 这个关键词的
用 python 的话返回时这个样子的

————————————————————————————————-

我用 python 请求返回来的是张这样的, html 页面开头有好几行注释, 正常的不应该会有这么多注释

网友回复:

注册 换个姿势,用 selenium 或者 puppeteer

深海空间 2 楼正解,稍微有点反爬的 re 处理都比较麻烦

hous135 大概率是 js 加载的数据 直接上 selenium

Unique selenium 多慢啊, 要是 js 渲染的就去解这个 js

dragonfsky js 逆向

Mr.lin 虽然 我不会 但是你这个提问方式我就很喜欢

CapitalTeemo 这个是大佬,我梦想着自己的 JS 能到这个水平

榆榆不可及 感觉不是通过 JS 加载页面的, 我在 chrome 上右键查看源代码时是可以看到哪些内容, 通过 xhr 加载的话源代码看不到的

Tankie 不是 JS 渲染的, 关键信息都放在这个路径的 html 页面里

注册 现在最流行的姿势是用 golang 的 chromedp 库实现~

注册 就学了 python, go 没接触过 …

sharp097 楼上说的正解,你能看到是一致的只不过是已经 JS 处理过了

深海空间 pm 网页 我也瞅瞅

遥远彼方 大佬 这玩意可以过 cf 的机器人识别吗 selenium 会自己暴露特征 搞半天都过不了 cf

dragonfsky 我是在 chrome 里通过右键, 查看网页源代码的, 这种情况下, JS 应该还没生效吧

dragonfsky 如果你右键查看网站源代码没有上述关键词,那就换个姿势,或者考虑手机模式下,说不定有惊喜

深海空间 用 selenium 或 puppeteer 爬起来是不是比以前直接抓页面慢很多?

Chiser 这啥技术?怎么解 js?还不是需要 webkit 去渲染 dom 啊?最后和 puppteer 不是一样吗?

jinwyp 这个比 Puppeteer  快多少?但这个还是和 Puppeteer  一样啊 Puppeteer  可是官方的啊

注册 右键查看源代码有这个关键字,用 python 请求的话就找不到,ua 和 cookie 都改了还是一样,不太清楚他是怎么把 python 和浏览器区分出来的,也没被 cf 拦住

注册 应该没区分啊,我用 postman 直接 get 都有

深海空间 我用 python 的话

badyun 真考研不会去扒视频的,看书才是王道。

深海空间 是 js 计算的,需要把动态生成的那段 js 运行一下,就能得到 m3u8 地址

委员 不是, 你打开我帖子里的链接, 再打开 chrome 调试工具, 刷新页面, 然后在 console 里打印 media_4 这个值, 这个是写死在 html 页面的一个 mp4 格式的直链 (非 m3u8 切片)

红 A 用 python 试了下.   抓回来的 源码有 media_4 你确认下 get 发出的 http 头吧

深海空间 postman 直接调都有,肯定不是 js 算的

teardrops 见鬼了, 就两行代码, 不应该会出错的啊

wjj 请求头问题吧……

注册 对着浏览器加了 headers 也一样

注册 我用 py 试了一遍,没问题啊

深海空间 确实有点坑, 他的开发者和他的网站一样骚 但是这里存在一些小技巧, 甚至 headers 都是多余的, 它的检测点不在这里

badyun 确实, 用你的方法使用 http.client 可以获取到正常的页面, 但是用 requests 库就不正常了, 你用 requests 也测试一下

Mr.lin 老哥说一下, 问题出在哪里? 我已经想不到了, 用 http.client 是正常获取的, 但是用 requests 就不行了

深海空间 学习了,明天晚上我也去试试,还有你用得那个软件是什么  写代码的软件,用记事本写太累了

深海空间 我用的 sublimetext, 我就图个启动快速, 如果正常开发的话, 建议用 vscode

deyu playwright 好像是 selenium 的升级版

正文完
 0