【问题标题】:How to extract release year from IMDB data using BeautifulSoup如何使用 BeautifulSoup 从 IMDB 数据中提取发布年份
【发布时间】:2016-12-04 00:19:33
【问题描述】:

我一直在做一个从这个IMDB网站提取数据的简单问题,但是因为我无法理解做这个问题的常用方法,所以我找到了自己的方法并卡住了。

我正在尝试获取名称和发布年份,html 代码如下所示:

<div class="a">
  <div>
    <div>
      <div class="b">
        <h3 class="c"><span class="d">1</span> <a href="link%20here">name of
        movie</a> <span class="e">release year</span></h3>
      </div>
    </div>
  </div>
</div>

现在我完成了名称提取,但我无法提取发布年份,请帮助

我的代码:

soup  = BeautifulSoup(r.text)
item = soup.find_all("div" , {"class" : "a"})
for i in item:
    title = i.find("div" , {"class" : "b"}).a
    release_year = i.find("div" , {"class" : "b"}.span
print(title.get_text() , release_year.get_text())

输出如下:

(电影名称,'1)

我希望输出为

(电影名称,1990)

【问题讨论】:

    标签: beautifulsoup imdb bs4


    【解决方案1】:

    release_year = i.find("div" , {"class" : "b"}.span 将导致 release_year 指向结果标头内的第一个跨度。第一个跨度是搜索结果编号,而不是发布年份。

    而是通过类属性值来查找:

    import requests
    from bs4 import BeautifulSoup
    
    url = "http://www.imdb.com/search/title?at=0&sort=num_votes,desc&start=1&title_type=feature&year=1950,2012"
    
    r = requests.get(url)
    soup = BeautifulSoup(r.content, "html.parser")
    
    search_results = soup.find_all("div", class_="lister-item-content")
    for result in search_results:
        header = result.find("h3", class_="lister-item-header")
    
        title = header.a
        release_year = header.find(class_="lister-item-year")
        print(title.get_text(), release_year.get_text().strip("()"))
    

    打印:

    (u'The Shawshank Redemption', u'1994')
    (u'The Dark Knight', u'2008')
    ...
    (u"One Flew Over the Cuckoo's Nest", u'1975')
    (u'The Truman Show', u'1998')
    

    【讨论】:

      猜你喜欢
      • 2016-02-16
      • 1970-01-01
      • 2015-12-21
      • 2014-02-23
      • 1970-01-01
      • 2019-05-24
      • 2018-08-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多