【问题标题】:How to scrape movies information from the IMDB website?如何从 IMDB 网站上抓取电影信息?
【发布时间】:2019-05-13 20:51:59
【问题描述】:

我是 Python 新手,正在尝试抓取 IMDB。我正在抓取 250 部顶级 IMDB 电影的列表,并希望获取每个独特网站的信息,例如每部电影的长度。

我已经有一个唯一 URL 列表。所以,我想遍历这个列表,对于这个列表中的每个 URL,我想检索那部电影的“长度”。这可以在一个代码中完成吗?

for URL in urlofmovie:
    htmlsource = requests.get(URL)
    tree_url = html.fromstring(htmlsource)
    lengthofmovie = tree_url.xpath('//*[@class="subtext"]')

我希望lengthofmovie 会成为所有电影长度的列表。然而,它已经在第 2 行出错了:htmlsource

【问题讨论】:

  • urlofmovie 中有什么?你能发布完整的代码吗?你遇到了什么错误?
  • Does IMDB provide an API?的可能重复
  • "我希望 'lengthofmovie' 会成为所有电影长度的列表" => 它不会 - 没有语言具有读心能力,所以如果你想要一个列表,你必须使用列表。
  • "但是,它已经在第 2 行出错了:htmlsource。" => 这是一个不同的问题。请每个问题发布一个问题。此外,当您的代码中有错误时,您应该发布确切的错误消息和完整的回溯 - 但在这种情况下,错误很可能是由于 requests.get 返回一个 HTTPResponse 对象,而不是字符串。您想要响应的 .text 属性而不是(参见 requests doc)。
  • 如果我建议您有更好的方法来做到这一点怎么办?在这里试试这个 - pypi.org/project/IMDbPY

标签: python loops web-scraping imdb imdbpy


【解决方案1】:

要使其成为列表,您应该首先创建一个列表,然后将每个长度附加到该列表。

length_list = []
for URL in urlofmovie:
    htmlsource = requests.get(URL)
    tree_url = html.fromstring(htmlsource)
    length_list.append(tree_url.xpath('//*[@class="subtext"]'))

小提示:由于您是 Python 新手,我建议您阅读 PEP8 conventions。您的变量命名可以使您(和其他开发人员)的生活更轻松。 (urlofmovie -> urls_of_movies)

但是,在第 2 行:htmlsource 已经出错了。

请提供您收到的例外情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-22
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-02
    • 2022-01-18
    相关资源
    最近更新 更多