使用 lxml 和请求包抓取 IMDb 评论页面

Scraping IMDb Review Page with lxml and requests package

我想借助 lxml 提取用户对特定电影的评论。 在此之前,我需要先找出评论数。

示例评论页面是 Interstellar

我在 Firebug 的帮助下找到了可以找到用户评论的 XPath:

/html/body/div[1]/div/layer/div[4]/div[3]/div[3]/div[3]/table[2]/tbody/tr/td[2]

我有这段代码可以提取该行

reviewPage = lxml.html.document_fromstring(requests.get("http://www.imdb.com/title/tt0816692/reviews?start=0").content)
number_of_reviews = reviewPage.xpath("/html/body/div[1]/div/layer/div[4]/div[3]/div[3]/div[3]/table[2]/tbody/tr/td[2]")[0]

但是,在打印评论数时,我什么也没得到。问题是什么 ?

您可以使用以下行来提取评论数:

number_of_reviews = int(reviewPage.xpath("//div[@id = 'tn15content']/table[2]/tr/td[2]")[0].text_content().split()[0])

只要稍微修改一下,您甚至可以使用自己的代码。问题出在您的 XPath 上。去掉 tbody 部分就可以了。

number_of_reviews = reviewPage.xpath("/html/body/div[1]/div/layer/div[4]/div[3]/div[3]/div[3]/table[2]/tr/td[2]")[0]

您可能在浏览器的开发人员工具的帮助下获得了 HTML 的结构,这添加了 tbody,即使它不存在于 html 中。如果你直接通过View Source (Ctrl+U)观看HTML文件,你会发现文件中没有tbody

Why does firebug add <tbody> to <table>?