rong1667 发表于 2021-9-1 14:54

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(搜索内容))

无阻 发表于 2021-9-1 15:06

有可能这个播放地址是JavaScript计算得出的

Wxylkxy 发表于 2021-9-1 15:06

你看看是不是懒加载。虽说可见即可得 但是你能看见的跟requests看见的可不一定一样喔。

平淡最真 发表于 2021-9-1 15:12

去这里找的到的才能get到view-source:http://xunjuba.com//tv/67680/7.html
这里没有说明是js加载的吧

tanghengvip 发表于 2021-9-1 15:14

你在元素审核里看到的东西 是页面最终的结果,并不一定是但个页面请求一次性返回给你的,你要参考F12实现爬虫,应该主要参考Network那一栏的请求,不要搞错方向了。
所以requests没有问题,是你找错接口地址了。

平淡最真 发表于 2021-9-1 15:18

平淡最真 发表于 2021-9-1 15:12
去这里找的到的才能get到view-source:http://xunjuba.com//tv/67680/7.html
这里没有说明是js加载的吧

https://p.pstatp.com/origin/pgc-image/890cb07ae1ee4c74abe57139e6198d70
确实是

rong1667 发表于 2021-9-1 15:18

平淡最真 发表于 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:}

byyulei 发表于 2021-9-1 15:20

你要的在这里

rong1667 发表于 2021-9-1 15:21

Wxylkxy 发表于 2021-9-1 15:06
你看看是不是懒加载。虽说可见即可得 但是你能看见的跟requests看见的可不一定一样喔。

懒加载 好像就要 用到selenium 模拟浏览器点击
这个待会试一下

rong1667 发表于 2021-9-1 15:22

无阻 发表于 2021-9-1 15:06
有可能这个播放地址是JavaScript计算得出的

JavaScript这个太深奥了 我待会百度一下咋搞 谢谢大佬
页: [1] 2
查看完整版本: python request.get 返回数据中body 不全,而浏览器的F12可以看到,求大神指点