【问题标题】:Python, trouble getting embedded video urlPython,获取嵌入式视频网址时遇到问题
【发布时间】:2015-04-27 21:29:09
【问题描述】:

好吧,我在这件事上摸不着头脑已经太久了。我正在尝试使用 Beautiful Soup 检索网页上嵌入视频的 url,并在 Python 2.7.6 中请求模块。我检查了 chrome 中的 html,我可以看到视频的 url,但是当我使用请求获取页面并使用 Beautiful Soup 时,我找不到“视频”节点。从源代码来看,视频窗口似乎是一个嵌套的 html 文档。我已经搜索了所有内容,但无法找出为什么我无法检索到这个。如果有人能指出我正确的方向,我将不胜感激。谢谢。

这是其中一个视频的网址:

http://www.growingagreenerworld.com/episode125/

【问题讨论】:

    标签: python web-scraping beautifulsoup python-requests


    【解决方案1】:

    问题是有一个iframe,里面带有video标签,在浏览器中是异步加载的。

    好消息是,您可以通过向 iframe URL 发出附加请求来模拟该行为,并将当前页面 URL 作为 Referer 传递。

    实施:

    import re
    
    from bs4 import BeautifulSoup
    import requests
    
    url = 'http://www.growingagreenerworld.com/episode125/'
    headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.115 Safari/537.36'}
    
    with requests.Session() as session:
        session.headers = headers
    
        response = session.get(url)
    
        soup = BeautifulSoup(response.content)
    
        # follow the iframe url
        response = session.get('http:' + soup.iframe['src'], headers={'Referer': url})
        soup = BeautifulSoup(response.content)
    
        # extract the video URL from the script tag
        print re.search(r'"url":"(.*?)"', soup.script.text).group(1)
    

    打印:

    http://pdl.vimeocdn.com/43109/378/290982236.mp4?token2=1424891659_69f846779e96814be83194ac3fc8fbae&aksessionid=678424d1f375137f
    

    【讨论】:

    • 我收到一个错误:response = session.get('http:' + soup.iframe['src'], headers={'Referer': url}) TypeError: 'NoneType' object has no attribute '__getitem__'
    猜你喜欢
    • 2017-03-30
    • 1970-01-01
    • 2021-11-12
    • 2018-09-10
    • 2018-09-09
    • 2020-12-02
    • 2014-04-04
    • 1970-01-01
    • 2021-09-04
    相关资源
    最近更新 更多