python使用xpath获取内容

python使用xpath获取内容

<div class="leftbox">
  <div class="panel">
    <div class="mtitle path"><h1>12</h1></div>
    <div class="mcon1"><h2>34</h2></div>
    <div class="mcon2">测试<a href="">链接</a></div>
  </div>
</div>
<div class="rightbox">
  <div class = "mtitle3 path">123</div>
  <div algin="mcon3">345</div>
  <div>ereer</div>
</div>


from lxml import etree
from lxml.html import tostring

# 1.获取h1标签的内容
data = selector.xpath('//div[@class="leftbox"]/div[@class="panel"]/div[contains(@class, "mtitle")]/h1/text()')[0]

# 2.获取h2标签的内容
data = selector.xpath('//div[@class="leftbox"]/div[@class="panel"]/div[@class="mcon1"]/h2/text()')[0]

# 3.获取mcon2标签的全部文字内容
data = selector.xpath('//div[@class="leftbox"]/div[@class="panel"]/div[@class="mcon2"]').xpath('string(.)')

# 4.获取class包含mtitle3 或者 algin=mcon3
data = selector.xpath('//div[@class="rightbox"]/div[contains(@class,"mtitle3") or @algin="mcon3"]')

# 5.获取当前标签全部字符串内容,包括标签本身
datas = selector.xpath('//div[@class="rightbox"]/div[contains(@class,"mtitle3") or @algin="mcon3"]')
for data in datas:
  # 编码格式为源码编码格式
  str = tostring(data, encoding="utf-8").decode("utf-8")
  print(str)

# 6.获取当前标签内的全部文字(不含html标签)
datas = selector.xpath('//div[@class="rightbox"]')
data = datas[0]
data = data.xpath(‘.//text()’)
data = ''.join([i.strip() for i in data])

原文地址:https://www.cnblogs.com/WebLinuxStudy/p/14502609.html