【发布时间】:2021-05-14 15:01:45
【问题描述】:
如果 XPath 中没有节点,如何访问文本? 文本在引号中,并在另一个节点内的单独行中
我无法在 XPath 中选择正确的元素
<span>
<a href="www.imagine_a_link_here.org">
"
This is the text I need to access
"
</a>
</span>
我通常会通过写作来做到这一点
import requests
from lxml import html,etree
from lxml.html import document_fromstring
page = requests.get('https://www.the_link_im_trying_to_webscrape.org')
tree = html.fromstring(page.content)
the_text_i_need_to_access_xpath = '/span/a/text()'
the_text_i_need_to_access = tree.xpath(the_text_i_need_to_access_xpath)
不幸的是,这只会返回一个空列表。有谁知道我必须如何修改 XPath 才能获得我正在寻找的字符串?
【问题讨论】:
-
对于您发布的示例 HTML,XPath 是正确的,应该选择锚点内的文本。您确定 HTML 不包含其他包装元素,例如
<html>和<body>?您可以尝试对后代轴使用更通用的 XPath:即//span/a/text() -
@MadsHansen:如果你对文本进行硬编码,它不会给出结果
标签: python xml web-scraping xpath lxml