python xpath提取转码_利用python脚本(xpath)抓取数据

#-*- coding:utf-8 -*-

from lxml importetree

html= """

我的文档
  • NO.1
  • NO.2
  • NO.3
  • one
  • two

"""selector=etree.HTML(html)############ example 1 #############这里使用id属性来定位哪个div和ul被匹配 使用text()获取文本内容#这里注意要层层匹配#content = selector.xpath('//div[@id="cctv"]/div[@class="content"]/ul[@id="ul"]/li/text()')#content = selector.xpath('//div[@id="cctv"]/div[@class="content"]/ul[@id="ul2"]/li/span[@class="ctv"]/text()')

content = selector.xpath('//a/@href')for i incontent:print(i)print(u"************ 华丽分割符1 ************")############ example 2 #############使用绝对路径定位a标签的title

con = selector.xpath('/html/body/div/a/@title')#使用相对路径定位 两者效果是一样的

con = selector.xpath('//a/@title')print(len(con))print(con[0], con[1])print(u"************ 华丽分割符2 ************")############ example 3 #############starts-with 解决标签属性值以相同字符串开头的情况

con2 = selector.xpath('//span[starts-with(@class,"c")]/text()') #这里使用starts-with方法提取div的id标签属性值开头为a的div标签

for i incon2:print(i)print(u"************ 华丽分割符3 ************")#string(.) 标签套标签

html2 = '''

left

right

up

down

east

west

'''

#下面是没有用string方法的输出

selector2 =etree.HTML(html2)

con3= selector2.xpath('//div[@id="a"]/text()')for i incon3:print(i)print(u"************ 华丽分割符4 ************")#下面使用string方法的输出

data = selector2.xpath('//div[@id="a"]')#info = data[0].xpath('string(.)').extract()[0]

info = data[0].xpath('string(.)')

con4= info.replace('\n', '').replace(' ', '')for i incon4:#python 输出结果默认是\n,换行,将结尾替换掉即可实现不换行。

print(i, end='')print("\r")print(u"************ 华丽分割符5 ************")############ example 4 ############

html3 = """

hello

H

hehe
"""selector3=etree.HTML(html3)#使用text()的方法来判别是哪个div标签

con5 = selector3.xpath('//div[text()="hehe"]/text()')print(con5[0])print(u"************ 华丽分割符6 ************")############ example 5 ############

html4 = """

hello

H

J

I

hehe
"""selector4=etree.HTML(html4)#在XPath中可以使用多重过滤方法寻找标签,例如ul[3][@id=”a”] 这里使用【3】来寻找第三个ul标签 并且它的id属性值为a

con6 = selector4.xpath('//div/p[position()>=2]/text()')for i incon6:print(i)print(u"************ 华丽分割符7 ************")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值