python中的Web取消text()

2024-06-15 21:55:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个网站报废功能的问题。我想要得到的两个东西的XPath是

/html/body/div/table[2]/tbody/tr[5]/td[1]/div[1]/ul/li[1]/text()
/html/body/div/table[2]/tbody/tr[5]/td[1]/div[1]/ul/li[1]/a

html是

<li><a href="http://www.acu.edu/" target="_blank" class="institution">Abilene Christian University</a> (TX)</li>

我试图用一个函数来循环tr[5]中的每个li。我遇到的问题是获取文本()。我已经尝试了这个函数的许多不同的变体

from lxml.html import parse
from urllib2 import urlopen
def _clean(lst):
    for elm in lst:
        lnk=elm.findall('.//a')
        for this in lnk:
            lnk_txt.append(this.text_content())
        state_txt.append(elm.findall('.//text()'))

此特定函数返回“()”上的KeyError。如果我删除(),它将返回一个空元素列表。lnkèU txt工作正常。你知道吗

我想要的是两张单子。一个是大学的名字。另一个是学校的位置。最终目标是生成元组(名称、状态)。你知道吗


Tags: 函数textfromdivtxthtmltablebody
1条回答
网友
1楼 · 发布于 2024-06-15 21:55:30

您需要找到a元素的following text sibling

lnk.xpath("following-sibling::text()")

演示:

>>> import lxml.html
>>> data = '<li><a href="http://www.acu.edu/" target="_blank" class="institution">Abilene Christian University</a> (TX)</li>'
>>> li = lxml.html.fromstring(data)
>>> li.xpath("//a[@class='institution']/following-sibling::text()")[0].strip()
'(TX)'

相关问题 更多 >