我想借助lxml提取特定电影的用户评论。 在此之前,我需要先了解一下评论的数量。
示例评论页面为Interstellar
我找到了XPath,在Firebug的帮助下找到了用户评论:
/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]
然而,在打印评论数量时,我什么都没得到。问题是什么 ?
答案 0 :(得分:2)
您可以使用以下行提取评论数量:
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
。