我试图了解使用lxml来拉取文本的过程 尝试简单的python程序
from lxml import html
import requests
page = requests.get('http://www.foo bar')
tree = html.fromstring(page.content)
name = tree.xpath('//*[@id="yui_3_17_2_1_1487276887950_2408"]/div[@class="locu-menu-item-name"]/text')
print(name)
结果为[]
嵌套标记的值,xpath为: // * [@ ID = “yui_3_17_2_1_1487276887950_103789”] / DIV [1] / DIV [1]
值为<div class="locu-menu-item-name">Italian Lemon Sorbetto</div>
这是嵌套的
<div class="menu-item-inner">
<div class="locu-menu-item-name">Italian Lemon Sorbetto</div>
<div class="locu-menu-item-description">Dairy-free</div>
<div class="option-wrapper"></div>
<div class="locu-menu-item-price"></div>
</div>
任何帮助都会很棒。
答案 0 :(得分:0)
xpath中有错误。要获取文字,最后应使用/text()
,而不是/text
。所以你的xpath应该是这样的:
name = tree.xpath('//*[@id="yui_3_17_2_1_1487276887950_2408"]/div[@class="locu-menu-item-name"]/text()')
使用/text
时,表示您正在寻找嵌套标记文本。
<div class="locu-menu-item-name"><text>Italian Lemon Sorbetto</text></div>