1

我一直在扯我的头发来玩这个:

'//*[@id="mw-content-text"]/div[2]/table/tbody/tr/td/div/ul/li/a'

作为一个 XPath,从这个 wiki 页面获取所有学区 URL:http ://en.wikipedia.org/wiki/List_of_school_districts_in_Arkansas 。什么是正确的 XPath?

提前致谢!

代码片段:

            print 3.1, tree.xpath('//*[@id="mw-content-text"]/div[2]')
            print 3.2, tree.xpath('//*[@id="mw-content-text"]/div[2]/table')
            print 3.3, tree.xpath('//*[@id="mw-content-text"]/div[2]/table/tbody')
            print 3.4, tree.xpath('//*[@id="mw-content-text"]/div[2]/table/tbody')     
            print 3.5, tree.xpath('//*[@id="mw-content-text"]/div[2]/table/tbody/tr/td/div/ul/li/a/text()')                           
            for row in tree.xpath('//*[@id="mw-content-text"]/div[2]/table/tbody/tr/td/div/ul/li/a/text()'):
                print row
                district_urls.append('http://en.wikipedia.org'+row.get('href')) 

作为参考:

3.1 [<Element div at 0x1109f7f00>]
3.2 [<Element table at 0x1109f7f00>]
3.3 []
3.4 []
3.5 []
4

2 回答 2

2

我猜你一直在使用 Firebug 或类似的开发工具创建这个 XPath 表达式。它们在需要<tbody/>围绕<tr/>s 的标签的 DOM 上工作,如果源代码中没有给出这些标签,它们会被插入。查看页面源代码时(使用 Firebug,必要时使用wgetor curl),您会发现没有<tbody/>标签。

使用这个表达式:

//*[@id="mw-content-text"]/div[2]/table/tr/td/div/ul/li/a
于 2013-08-14T18:46:06.173 回答
0

尝试这个 :

//*[@id="mw-content-text"]/div[2]/table/tr/td/div/ul/li/a/text()
于 2013-08-14T18:24:59.183 回答