如何使用Xpath

时间:2018-11-12 14:48:21

标签: xml xpath web-scraping google-sheets

因此,我正尝试使用ImportXML函数在Google表格中导入电影标题,该功能希望我为其提供 Xpath查询。问题是BoxOfficeMojo,它的结构非常奇怪,这使我无法弄清楚如何查询。

Google表格中的所有功能都可以正常工作,但在为ImportXML-cell提供链接时,我只是无法生成正确的Xpath查询,而这只能给我电影的标题。

这是我必须使用的:

我尝试了许多不同的查询,包括当我检查站点时Chrome会为我生成的一个查询,但是BoxOfficeMojo的结构很奇怪,这意味着我无法使用任何逻辑来创建查询。我已经花了几个小时了,最接近我得到正确结果的是这个查询

//*[//table[@border = '0']]/td/font/b

哪个给我这个结果:

The A-Team

4

我无法为自己的生活弄清楚如何过滤电影的标题(在这种情况下为“ A团队”)。

为了很好地衡量,当我检查站点时,Chrome建议将其作为Xpath

//*[@id="body"]/table[2]/tbody/tr/td/table[1]/tbody/tr/td[2]/font/b

上面的查询不起作用,只是抛出一个错误,好像查询什么都不返回...

可能的解决方案 我见过一些成功进行Xpath查询的人,他们在其中搜索特定短语,并在该短语之后返回内容(请看:python: xpath returns empty list from boxofficemojo.com)。

但是,由于电影没有任何文字,我似乎无法弄清楚如何搜索电影的标题。

抓取像该标题这样简单的内容的全部要点是,BoxOfficeMojo上的标题全年都会变化,我需要准确的标题才能抓取和比较Google表格中的数据。

希望我已经为人群中的Xpath向导提供了足够的信息,以便能够为我提出建议。

提前谢谢!

2 个答案:

答案 0 :(得分:2)

如安德森(Andersson)所建议的那样,使用以下查询:

//font[@size="6"]/b

搞定了:)

编辑:

事实证明,某些电影的标题格式会导致结果分成几个单元格,从而破坏我的电子表格。

但是,该解决方案似乎适用于所有电影,并且将仅返回带有标题的单个单元格:

=JOIN(" ";IMPORTXML(H81;"(//font[@face='Verdana']/b)[2]"))

答案 1 :(得分:2)

我尝试使用xpaths观看了几部电影,但效果很好

//font[@face="Verdana" and @size="6"]/b