【问题标题】:Cannot identify Javascript XHR API loading data to this page无法识别 Javascript XHR API 将数据加载到此页面
【发布时间】:2021-06-11 17:18:51
【问题描述】:

我正在尝试解析以下链接中的 EPG 数据。当我使用以下内容检查 HTML 时,所有程序数据都丢失了。我意识到这是因为它是由 Javascript 异步加载的,但我无法在 Chrome 工具中弄清楚这是 API 调用,因为这个页面似乎一次加载了很多:

import requests

url = 'https://mi.tv/ar/programacion/lunes'
headers ={
    'Accept': 'text/html, */*; q=0.01',
    'Referer': outer,
    'sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="90", "Google Chrome";v="90"',
    'sec-ch-ua-mobile': '?0',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36',
    'X-KL-Ajax-Request': 'Ajax_Request',
    'X-Requested-With': 'XMLHttpRequest'
    }

r = requests.get(url=url, headers=headers)
rr = r.text
print(rr)

...谁能帮我确定正确的 API 是什么?我可以看到 HTML 中给出了 API 参数,但我无法将它们组装成一个工作链接,我在 chrome 工具中看不到该 URL 根目录的任何内容...

【问题讨论】:

    标签: python python-3.x web-scraping python-requests


    【解决方案1】:

    以下显示了正确使用的 url 以及如何通过频道键返回 dict 中的列表

    import requests
    from bs4 import BeautifulSoup as bs
    from pprint import pprint
    
    headers = {'User-Agent': 'Mozilla/5.0'}
    r = requests.get('https://mi.tv/ar/async/guide/all/lunes/60', headers = headers)
    soup = bs(r.content, 'lxml')
    listings = {c.select_one('h3').text: list(zip([i.text for i in c.select('.time')], [i.text for i in c.select('.title')])) 
                for c in soup.select('.channel')}
    pprint(listings)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-03
      • 2017-03-04
      • 2021-04-17
      • 2012-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多