Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何通过xpath解析lxml中的子元素 page=urlopen(请求) doc=parse(page).getroot() table=doc.xpath('/html/body/div/div/div/table') 桌子 doc.xpath('/html/body/div/div/div/table/tr') ... table.xpath('/tr') []_Python_Xpath_Lxml - Fatal编程技术网

Python 如何通过xpath解析lxml中的子元素 page=urlopen(请求) doc=parse(page).getroot() table=doc.xpath('/html/body/div/div/div/table') 桌子 doc.xpath('/html/body/div/div/div/table/tr') ... table.xpath('/tr') []

Python 如何通过xpath解析lxml中的子元素 page=urlopen(请求) doc=parse(page).getroot() table=doc.xpath('/html/body/div/div/div/table') 桌子 doc.xpath('/html/body/div/div/div/table/tr') ... table.xpath('/tr') [],python,xpath,lxml,Python,Xpath,Lxml,为什么table.xpath('/tr')不产生相同的元素列表doc.xpath('/html/body/div/div/div/table/tr')会产生相同的元素列表?这是因为以/开头的xpath总是从文档根开始匹配 要避免这种情况,请保留斜杠,或者显式使用匹配当前元素。 这两种方法中的任何一种都应该有效: page = urlopen(req) doc = parse(page).getroot() table = doc.xpath('/html/body/div/div/div/tab

为什么
table.xpath('/tr')
不产生相同的元素列表
doc.xpath('/html/body/div/div/div/table/tr')
会产生相同的元素列表?

这是因为以
/
开头的xpath总是从文档根开始匹配

要避免这种情况,请保留斜杠,或者显式使用
匹配当前元素。
这两种方法中的任何一种都应该有效:

page = urlopen(req)
doc = parse(page).getroot()
table = doc.xpath('/html/body/div/div/div/table')
table
<Element table ...>
doc.xpath('/html/body/div/div/div/table/tr')
<Element tr ...>...
table.xpath('/tr')
[]

这是因为以
/
开头的xpath总是从文档根开始匹配

要避免这种情况,请保留斜杠,或者显式使用
匹配当前元素。
这两种方法中的任何一种都应该有效:

page = urlopen(req)
doc = parse(page).getroot()
table = doc.xpath('/html/body/div/div/div/table')
table
<Element table ...>
doc.xpath('/html/body/div/div/div/table/tr')
<Element tr ...>...
table.xpath('/tr')
[]

我可能弄错了,但请尝试
table.xpath('./tr')
或'//tr'。目的是什么?例如-网页抓取或其他什么?网页抓取是的,为什么你认为这是过分的?请把它放在标签或标题中!?这只是一个例子。我试图学习xpath和lxmlI可能是错误的,但请尝试
table.xpath('./tr')
或'//tr'。目的是什么?例如-网页抓取或其他什么?网页抓取是的,为什么你认为这是过分的?请把它放在标签或标题中!?这只是一个例子。我正在尝试学习xpath和lxml