html使用python和xpath进行抓取

时间:2017-02-17 22:42:28

标签: python xpath web-scraping

我试图了解使用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>

任何帮助都会很棒。

1 个答案:

答案 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>