鱼C论坛

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

求问,爬虫:关于网页刷新后网页代码变化问题

[复制链接]
发表于 2020-11-11 16:01:40 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 兰竹皋 于 2020-11-12 11:57 编辑

请问,在刷新浏览器后有时网页代码 expire=
2.png
会变成 e=
1.png
是为什么?
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-11-11 21:00:44 | 显示全部楼层
网站的设置吧,这个baseurl应该是网站给你的,可能轮训或者别的机制生成,能用就可以。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-12 00:23:25 | 显示全部楼层
人家网站生成的url,管它为什么干啥,能正常请求拿到你想要的数据就行了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-12 10:22:41 | 显示全部楼层
suchocolate 发表于 2020-11-11 21:00
网站的设置吧,这个baseurl应该是网站给你的,可能轮训或者别的机制生成,能用就可以。

可用爬虫爬取视频资源时,只有当 expires 时才能下载到视频。
不然下载地视频只有 0kb,好像是获得不到资源一样。
如此就像概率事件一样,反复重复,有时能下,有时不能。。。
请问,这又是为什么,或者改怎么办?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-12 10:30:05 | 显示全部楼层
兰竹皋 发表于 2020-11-12 10:22
可用爬虫爬取视频资源时,只有当 expires 时才能下载到视频。
不然下载地视频只有 0kb,好像是获得不到 ...

代码发一下,一起看看。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-12 11:11:34 | 显示全部楼层
本帖最后由 兰竹皋 于 2020-11-12 11:12 编辑

代码如下
import requests
import re
import time

def get_html(url):
    return requests.get(url,headers=headers1).text

def parse(html):
    video_name=re.findall('<span class="tit">(.*?)</span>',html,re.S)[0]+'.flv'
    print("正在爬取"+video_name+"...")
    video_url=re.findall('window.__playinfo__={.*?"baseUrl":"(.*?)".*?}',html,re.S)[0]
    print(video_url)
    return video_url,video_name

def download(videourl,video_name):
    with open(video_name,'wb') as f:
        f.write(requests.get(videourl,headers=headers2,stream=True,verify=False).content)
    f.close()
    print("视频下载完成!")


if __name__ == '__main__':
    avid=input("请输入要爬取的视频id:")
    base_url=f'https://www.bilibili.com/video/BV{avid}'
    headers1={
        'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
        'Host': 'www.bilibili.com',
        'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
        'Accept-Encoding':'gzip, deflate, br',
        'Accept-Language':'zh-CN,zh;q=0.9',
        'Cache-Control': 'max-age=0',
        'Connection': 'keep-alive'
    }

    headers2={
        'Host':'cn-jsnj3-cmcc-v-14.bilivideo.com',
        'Accept-Encoding':'identity',
        'Accept-Language':'zh-CN,zh;q=0.9',
        'Origin':'https://www.bilibili.com',
        'Referer':base_url,
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'
    }
    html=get_html(base_url)
    time.sleep(0.5)
    videourl,videoname=parse(html)
    download(videourl,videoname)

比如输入番号:1wa4y1x7io
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-12 11:18:29 | 显示全部楼层
suchocolate 发表于 2020-11-12 10:30
代码发一下,一起看看。

上面代码,我这边只有在url 为 expires时,才能下载到资源,e时好像是网络连接失败 ,得不到资源
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-12 11:43:08 | 显示全部楼层
我知道了,
当 e开头时,可以通过
headers中,指定Range来控制下载内容大小来进行下载
但,为什么?
expires与e为什么时而会相互转换?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-12 11:56:41 | 显示全部楼层
我知道原因了
抱歉,前面headers中的host没改,所以不能直接下载
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-17 22:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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