第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

防止lxml在匹配元素后選擇下一個文本節(jié)點(diǎn)

防止lxml在匹配元素后選擇下一個文本節(jié)點(diǎn)

倚天杖 2022-03-09 20:12:18
我需要在一些 HTML 字符串模板中<div>找到id="XXX":from lxml import htmltemplate = '''Text node 1<div id="XXX">XXX content</div>Text node 2'''tree = html.fromstring(template)element = tree.get_element_by_id('XXX')result = html.tostring(element).decode('utf-8')print(result)>>> <div id="XXX">XXX content</div>>>> Text node 2由于一些奇怪的原因,它選擇<div>和下一步Text node 1<div id="XXX">XXX content</div>如果我用另一個包裹<div>:Text node 1<div>    <div id="XXX">XXX content</div></div>Text node 2一切都更好,它打印匹配<div id="XXX">和一個空行(解碼\n):>>> print(result)<div id="XXX">XXX content</div>\n如果我在<div>之后添加一些<div id="XXX">:Text node 1<div id="XXX">XXX content</div><div></div>Text node 2一切也更好,它打印匹配<div id="XXX">和一個空行(解碼\n):>>> print(result)<div id="XXX">XXX content</div>\n以前Text node 1從未受到影響 - 至少這很好)那么,可以指定一些東西不選擇下一個文本節(jié)點(diǎn)嗎?這會很棒,如果\n也不會匹配,但我可以忍受請告訴我,如果該問題與 XPath 無關(guān)lxml,而是與 XPath相關(guān)PSBeautifulSoup沒有這個問題,即使使用與lxml解析器相同的模塊,它甚至不匹配next\n版本:>>> pythonPython 3.7.3>>> pip show lxmlVersion: 4.3.4
查看完整描述

1 回答

?
翻翻過去那場雪

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個贊

看起來有時只需要使用蠻力:


tree = html.fromstring(template)

element = tree.get_element_by_id('XXX')


element.tail = None #brute force in action....


result = html.tostring(element).decode('utf-8')

print(result)

輸出所需的


<div id="XXX">XXX content</div>

現(xiàn)在由比我聰明的人來解釋為什么我們需要求助于這個......


查看完整回答
反對 回復(fù) 2022-03-09
  • 1 回答
  • 0 關(guān)注
  • 188 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號