【问题标题】:Web scraping IMDB with Python's Beautiful Soup用 Python 的 Beautiful Soup 抓取 IMDB
【发布时间】:2022-08-22 22:54:27
【问题描述】:

我正在尝试解析此页面“https://www.imdb.com/title/tt0068112/?ref_=fn_al_tt_1”,但找不到我需要的href (href=\"/title/tt0068112/episodes?ref_=tt_eps_sm\")。

我试过这段代码:

url=\"https://www.imdb.com/title/tt0068112/?ref_=fn_al_tt_1\"
page(requests.get(url)
soup=BeautifulSoup(page.content,\"html.parser\")
for a in soup.find_all(\'a\'):
    print(a[\'href\'])

这有什么问题?我还尝试使用print(soup.prettify()) 检查“手动”,但似乎该链接是隐藏的或类似的东西。

    标签: python parsing web-scraping beautifulsoup href


    【解决方案1】:

    您可以通过请求获取页面 html,href 项在其中,无需特殊 api。我试过了,它奏效了:

    import requests
    from bs4 import BeautifulSoup
        
    page = requests.get("https://www.imdb.com/title/tt0068112/?ref_=fn_al_tt_1")
    soup = BeautifulSoup(page.content, "html.parser")
        
    scooby_link = ""
    for item in soup.findAll("a", href="/title/tt0068112/episodes?ref_=tt_eps_sm"):
        print(item["href"])
        scooby_link = "https://www.imdb.com" + "/title/tt0068112/episodes?ref_=tt_eps_sm"
        
    print(scooby_link)
    

    我假设您还想将链接保存到变量以供进一步抓取,所以我也这样做了。 ?

    【讨论】:

    • 谢谢你的帮助!事实是,我希望能够在不指定整个链接的情况下找到它,而只需使用一些关键字(在这种情况下使用标题代码)。我需要一些一般规则,因为我必须通过该站点进行多次搜索。此外,一旦我到达其中一个链接(比如我发布的那个),我必须找到每一集的链接,我发现同样的问题。
    【解决方案2】:

    要获取Episodes 的链接,您可以使用下一个示例:

    import requests
    from bs4 import BeautifulSoup
    
    url = "https://www.imdb.com/title/tt0068112/?ref_=fn_al_tt_1"
    
    soup = BeautifulSoup(requests.get(url).content, "html.parser")
    print(soup.select_one("a:-soup-contains(Episodes)")["href"])
    

    印刷:

    /title/tt0068112/episodes?ref_=tt_eps_sm
    

    【讨论】:

    • 谢谢你的帮助!事实是,我希望能够在不指定整个链接的情况下找到它,而只需使用一些关键字(在这种情况下使用标题代码)。我需要一些一般规则,因为我必须通过该站点进行多次搜索。此外,一旦我到达其中一个链接(比如我发布的那个),我必须找到每一集的链接,我发现同样的问题。
    猜你喜欢
    • 2022-01-07
    • 2023-03-20
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 2017-08-14
    • 1970-01-01
    • 2013-01-09
    • 1970-01-01
    相关资源
    最近更新 更多