firebug+XPath问题

因为要做网络爬虫,所以要用到XPath,正好firebug有找XPath的功能,用了下,发现有的XPath不工作,找来找去发现原来是firebug的问题。

/html/body/table/tr[3]/td[2]
/html/body/table/tbody/tr[3]/td[2]

注意:

  1. 以上两个XPath的区别在于tbody,firebug不管你的网页里有没有tbody,都会给你加上tbody。

    /html/body/table//tr[3]/td[2] # 不确定table与tr之间是否有tbody,可这样写。

  2. 有的时候网页的某些部分使用javascript或jquery生成,虽然firebug可以取到XPath,但实际网页源代码里是没有的,而且那些javascript或jquery生成的网页会影响firebug取出的XPath。

总之,firebug分析的网页有可能和爬虫抓取回来的网页不一样,切记。

注意:

  1. 为了从整个网页中找元素,在XPath开头放上双斜线(//)。

    //IMG[@align='center'] # 所有网页中align是center的img IMG[@align='center'] # 网页顶层中align是center的img

  2. 源代码里文件或图片等是相对路径,但浏览器可能把其转成绝对路径。

    //A[contains(@href, 'Orders.html')] # 匹配Orders.html就好 //A[@href='/OrdersApp/Orders.html'] # 必须等于,可能会出错,需注意源码是否绝对路径


这篇文章: 有用 无用 创建 2012-02-15 15:18:10 / 更新 2013-03-23 13:00:22