//input[@id="kw"]
//input[@class=“btn self-btn bg s_btn”]
//a[@class="toindex"]
//div[@id="head"]/div[5]/div[2]/a[1]或
//div[@id="head"]/div[5]/div[2]/a[@class="toindex"]或
//div[@id="head"]//a[@class="toindex"]
下面举例说明lxml的使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>#单标签型,最后要加斜线
<title>xpath测试</title>
</head>
<body>
<div class="song">
火药
<b>指南针</b>
<b>印刷术</b>
造纸术
</div>
<div class="tang">
<ul>
<li class="balove">停车坐爱枫林晚,霜叶红于二月花</li>
<li id="hua">商女不知亡国恨,隔江犹唱后庭花</li>
<li class="love" name="yang">一骑红尘妃子笑,无人知是荔枝来</li>
<li id="bei">葡萄美酒夜光杯,欲饮琵琶马上催</li>
<li><a href="www.baidu.com/">百度一下</a></li>
</ul>
<ol>
<li class="lucy">寻寻觅觅,冷冷清清,凄凄惨惨戚戚</li>
<li class="balili">乍暖还寒时候,最难将息</li>
<li class="lilei">三杯两盏淡酒</li>
<li>怎敌他晚来风急</li>
<li>雁过也,正伤心,却是旧时相识</li>
<li>爱就一个字,我只说一次</li>
<li>爱情36计,我要立刻美丽</li>
</ol>
</div>
</body>
</html>
#author:Adminstrator
#date: 2019/8/25
from lxml import etree
tree = etree.parse('xpath.html')#返回的是一个对象
#生成对象
ret = tree.xpath('//div[@class="tang"]/ul/li[1]')#返回的是一个内存地址,用列表封存的
print(ret[0].text)
ret1 = tree.xpath('//div[@class="tang"]/ul/li[1]/text()')#这种形式返回的是一个列表
print(ret1)
#如何取 www.baidu.com
ret2=tree.xpath('//div[@class="tang"]/ul/li[last()]/a/@href')
print(ret2)
#一骑红尘妃子笑,无人知是荔枝来
ret3 = tree.xpath('//div[@class="tang"]/ul/li[@class="love" and @name="yang"]')
print(ret3[0].text)
#模糊匹配 contains,找classz中带有 l 的所有li标签
ret4 = tree.xpath('//li[contains(@class,"l")]')
print('..................................')
print(ret4)
print('......................................')
#模糊匹配,找文本中含有“爱”的li
ret5 = tree.xpath('//li[contains(text(),"爱")]/text()')
print(ret5)
#模糊匹配,以ba开头的所有li标签
ret6 = tree.xpath('//li[starts-with(@class,"ba")]/text()')
print('.............................................')
print(ret6)
#/和//的区别
ret7 = tree.xpath('//div[@class="song"]/text()')# / 内部标签里的内容得不到,只获取节点内容
print(ret7)
ret8 = tree.xpath('//div[@class="song"]//text()')# // 内部标签里的内容也可以得到,获取节点里面不带标签的所有内容
print(ret8)
#直接将所有的内容拼接起来,返回给你
ret9=tree.xpath('//div[@class="song"]')
string=ret9[0].xpath('string(.)')
print(string.replace('\t', '').replace('\n', ''))