python - 从页面中提取 URL?

标签 python xpath

我一直在努力尝试各种变化:

'//*[@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 []

最佳答案

我猜您一直在使用 Firebug 或类似的开发人员工具创建此 XPath 表达式。他们在 DOM 上工作,需要 <tbody/>标签 <tr/> s,如果源代码中没有给出,则插入这些内容。当查看页面源代码时(使用 Firebug,如有必要,请使用 wgetcurl ),您会发现没有 <tbody/> 。标签。

使用这个表达式:

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

关于python - 从页面中提取 URL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18239109/

相关文章:

python - nodeenv -p 在 vi​​rtualenv 中不起作用

python - 修复列 "date_of_birth"中的空值违反了非空约束

xml - 用于在具有不同父元素的元素之间选择元素的 XPath

html - xslt需要选择单引号

java - 为什么我的程序的行为仅仅基于 Maven 依赖而改变?

java - 如何检测 SOAP 消息中是否存在命名空间前缀

python - 如何从列表的开头和结尾去除引号

python - Pandas 根据条件过滤行,但始终保留第一行

python - 在 python 中实现一维卷积的最佳方法是什么?

xslt测试以查看节点是否是其父节点的前X个子节点之一