gpt4 book ai didi

python: xpath 从 boxofficemojo.com 返回空列表

转载 作者:行者123 更新时间:2023-12-01 04:11:26 26 4
gpt4 key购买 nike

我正在尝试使用下面的代码从 BoxOfficeMojo.com 上每部电影的页面中抓取特定数据。不幸的是 xpath 返回一个空列表。一些帖子建议从 xpath 中删除 tbody,但这也会返回一个空列表。我使用相同的代码从烂番茄和 IMBD 中提取文本,并且 xpath 运行良好。有谁知道为什么会发生这种情况以及如何解决这个问题?

from lxml import html
import requests

# Box Office Mojo Scrape
page = requests.get('http://www.boxofficemojo.com/movies/?page=main&id=ateam.htm')
tree = html.fromstring(page.text)

print tree.xpath('//*[@id="body"]/table[2]/tbody/tr/td/table[1]/tbody/tr/td[2]/table/tbody/tr/td/center/table/tbody/tr[1]/td/font/b/text()')
print tree.xpath('//*[@id="body"]/table[2]/tr/td/table[1]/tr/td[2]/table/tr/td/center/table/tr[1]/td/font/b/text()')

# Rotten Tomatoes Scrape
page2 = requests.get('http://www.rottentomatoes.com/m/star_wars_episode_vii_the_force_awakens/')
tree2 = html.fromstring(page2.text)

print tree2.xpath('//*[@id="scorePanel"]/div[2]/div[1]/a/div/div[2]/div[1]/span/text()')

# IMDB Scrape
page3 = requests.get('http://www.imdb.com/title/tt2488496/?ref_=nv_sr_1')
tree3 = html.fromstring(page3.text)

print tree3.xpath('//*[@id="overview-top"]/h1/span[1]/text()')

最佳答案

包含所需信息的表嵌套在另一个表中,依此类推。因此,尝试获取 //*[@id='body']/table[2] 是行不通的,因为该 div 中只有一个表(其中嵌套有其他表)。

您可以使用极其笨拙的 xpath 表达式来获取此内容

//*[@id='body']/table/tr[2]/table/tr/td/table[1]/tr/td[2]/table/tr/td/center/table[1]/tr[1]/td/font/b/text()

请注意,所需的信息包含在字体标签内的粗体标签内,字体内直接包含文本Domestic Total Gross:。我将使用以下内容来获取该信息

//*[@id='body']//font[starts-with(normalize-space(.),'Domestic Total Gross:')]/b/text()

如果表结构发生变化,这也不会那么脆弱。

关于python: xpath 从 boxofficemojo.com 返回空列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34892437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com