python request.get 返回数据中body 不全,而浏览器的F12可以看到,求大神指点
本帖最后由 rong1667 于 2021-9-1 22:07 编辑我是一个爬虫小白,研究了半天 实在是没办法了,特来求助各位大神帮帮忙解答一下。
爬取的网站是一个影视网站http://xunjuba.com//tv/67680/7.html(这是云南虫谷的第7集)
import requests,chardet
from bs4 import BeautifulSoup
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'}
#搜索影视关键字
def sousuo(guanjianzi):
url = f'http://119.29.15.48:12334/ssszz.php?top=10&q=%s'%guanjianzi
res = requests.get(url)
res.encoding = 'utf-8'
# bs = BeautifulSoup(res.text, 'html.parser')
str_to_dict = eval(res.text)
for i in range(len(str_to_dict)):
print(i,'==',str_to_dict['title'])
sum_1=int(input('输入影视序号:'))
# sum_1 = 0
return str_to_dict['url']
def xuanze(dizhi):
url = f'http://xunjuba.com/%s'%dizhi
res = requests.get(url,headers = headers)
res.encoding = 'utf-8'
bs = BeautifulSoup(res.text, 'html.parser')
bs1 = bs.find('ul',class_="urlli")
bs2 = bs1.find_all('a')
for i in range(len(bs2)):
url_1 = f'%s%s.html'%(url,i+1)
print(url_1)
return url_1
print(xuanze(sousuo('云南虫')))
上面的代码是 为了 定位播放页面
运行之后 显示如下界面
然后 我继续 get 上面的网址例如 第七集http://xunjuba.com//tv/67680/7.html
为了找到真实的播放地址例如 https://sf1-ttcdn-tos.pstatp.com/obj/tos-cn-v-0015c002/2dbd46101ec0428ba1abdb13eae8ad52
这个播放地址 是在浏览器中 打开http://xunjuba.com//tv/67680/7.html这个界面后 在视频框中 右键 复制的播放地址
当然 在浏览器中 F12也可以看到 这个地址
然而 我用python 3.6.5 版本 requests.get('http://xunjuba.com//tv/67680/7.html') 之后
url = 'http://xunjuba.com//tv/67680/7.html'
res = requests.get(url,headers=headers)
res.encoding = 'utf-8'
print(res.text)
返回的 报文里 却没有真实的播放地址
通过与浏览器的对比
这与段 在python 返回报文中 根本没有显示
尝试了很多办法 都没有解决 求大佬指点一下谢谢谢谢谢谢谢谢 孩子在这里谢谢各位大佬了
——————————————————————————————————
感谢各位大神帮忙解惑完善后的代码在这里
from urlextract import URLExtract
import requests,chardet,re
from bs4 import BeautifulSoup
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'}
#影视
def sousuo(guanjianzi):
url = f'http://119.29.15.48:12334/ssszz.php?top=10&q=%s'%guanjianzi
res = requests.get(url)
res.encoding = 'utf-8'
# bs = BeautifulSoup(res.text, 'html.parser')
str_to_dict = eval(res.text)
for i in range(len(str_to_dict)):
print(i,'==',str_to_dict['title'])
sum_1=int(input('输入影视序号:'))
# sum_1 = 0
#定位ID
sum_2 = re.findall(r"\d+\.?\d*",str_to_dict['url'])
#接口定位
url_2 = r'http://d.gqyy8.com:8077/ne2/s%s.js'%''.join(sum_2)
res = requests.get(url_2)
extractor = URLExtract()
urls = extractor.find_urls(res.text)
a = {}
for i in urls:
key = i.split(',')
values = i.split(',')
if values == 'https://sf':
a=values
return a
if __name__ == "__main__":
搜索内容 = input('输入影视关键字:')
print(sousuo(搜索内容))
有可能这个播放地址是JavaScript计算得出的 你看看是不是懒加载。虽说可见即可得 但是你能看见的跟requests看见的可不一定一样喔。 去这里找的到的才能get到view-source:http://xunjuba.com//tv/67680/7.html
这里没有说明是js加载的吧 你在元素审核里看到的东西 是页面最终的结果,并不一定是但个页面请求一次性返回给你的,你要参考F12实现爬虫,应该主要参考Network那一栏的请求,不要搞错方向了。
所以requests没有问题,是你找错接口地址了。
平淡最真 发表于 2021-9-1 15:12
去这里找的到的才能get到view-source:http://xunjuba.com//tv/67680/7.html
这里没有说明是js加载的吧
https://p.pstatp.com/origin/pgc-image/890cb07ae1ee4c74abe57139e6198d70
确实是 平淡最真 发表于 2021-9-1 15:12
去这里找的到的才能get到view-source:http://xunjuba.com//tv/67680/7.html
这里没有说明是js加载的吧
view-source:http://xunjuba.com//tv/67680/7.html
这个界面确实没看到真实的播放地址。{:1_924:} 但是看到很多.js 结尾的 url
尤其第二行就是 .JS这应该是 JS加载的吧{:1_904:} 你要的在这里 Wxylkxy 发表于 2021-9-1 15:06
你看看是不是懒加载。虽说可见即可得 但是你能看见的跟requests看见的可不一定一样喔。
懒加载 好像就要 用到selenium 模拟浏览器点击
这个待会试一下 无阻 发表于 2021-9-1 15:06
有可能这个播放地址是JavaScript计算得出的
JavaScript这个太深奥了 我待会百度一下咋搞 谢谢大佬
页:
[1]
2