2009-09-25 113 views
2

我是XPath新手。我有网页的HTML源XPath表达式

http://london.craigslist.co.uk/com/1233708939.html 

现在我想从上面的页面中提取

  1. 全日
  2. 电子邮件中的数据 - 仅低于日

我也想找到页面上存在的按钮“回复此帖”

http://sfbay.craigslist.org/sfc/w4w/1391399758.html 

任何人都可以帮我写上述三个数据的三个XPath表达式。

回答

5

你不需要自己写这些,甚至不需要自己写出来。如果你使用Firebug插件,进入页面,右键单击你想要的元素,点击'检查元素',Firebug将在浏览器底部的浏览器中弹出HTML。在HTML查看器中右键单击所需的元素,然后单击“复制XPath”。

这就是说,你正在寻找(对于#3)中的XPath表达式为:

/HTML /体/格[4] /形式/按钮

...通过所述的方法获得如上所述。

1

从你的第一页开始,这是不可能的,因为这不是xpath的工作方式。为了让xpath表达式选择“某些东西”必须是节点(即元素)的东西
第二页相当容易,但为了做到这一点(或任何可以使确定你的按钮是唯一的)。例如,如果你确信文本“回复这个帖子”正确识别按钮只是做与
//button["Reply to this post"]

4

我注意到DTD HTML是为4/01第一环节过渡,而不是XHTML,所以有不能保证这是一个有效的XML文档,并且它可能不会被XML解析器正确加载。事实上,我看到几个标签没有正确关闭(即<小时>等)

我不知道第一个手头,第三个只是由亚历克斯回答,但第二个是/ html/body/a [0]。

+0

除了ristonj的回应,还有许多用于Ruby,Java的[[你命名它])的HTML消毒器,它将把SGML文档(如HTML 4.01)转换为XML,如果你想以编程方式。 – 2009-09-25 15:11:59

+0

是马歇尔。我通过Java程序来抓取页面。首先,我得到页面的html源代码,然后想要使用“正则表达式”或“xpath”来刮取所需的信息。我如何使用HTML消毒器将字符串格式的html源文件转换为SGML文档。有没有任何外部库。如果是,那么请告诉我该jar文件的下载URL。 主要关心的是程序的速度。 – 2009-09-25 15:18:41

+0

@Yatendra Goel:我已经使用WebHarvest库(http://web-harvest.sourceforge.net)在过去的项目中取得巨大成功。我建议你从那里开始。它可以让你声明性地在配置文件中定义刮刀,然后运行它,而不必“手动”地刮写自己编写的代码页面。然后,您可以将变量值存储在变量中,并检索它们以便在您的代码中使用,这比您目前的操作要容易得多。 – 2009-09-25 17:19:24