利用python脚本(xpath)抓取数据
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了利用python脚本(xpath)抓取数据,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3200字,纯文字阅读大概需要5分钟。
内容图文
![利用python脚本(xpath)抓取数据](/upload/InfoBanner/zyjiaocheng/1331/6f612704cb2b44ddabe605437aced232.jpg)
有人会问re和xpath是什么关系?如果你了解js与jquery,那么这个就很好理解了。
# -*- coding:utf-8 -*- from lxml import etree html = """ <!DOCTYPE html> <html> <head lang="en"> <title>我的文档</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> </head> <body> <div id="cctv"> <div class="content"> <ul id="ul"> <li>NO.1</li> <li>NO.2</li> <li>NO.3</li> </ul> <ul id="ul2"> <li><span class="ctv">one</span></li> <li><span class="ctv">two</span></li> </ul> </div> <div id="url"> <a href="http://www.jd.com" title="jd">jd</a> <a href="http://www.360buy.com" title="360buy">360buy</a> </div> </div> </body> </html> """ 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 in content: 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 in con2: print(i) print(u"************ 华丽分割符3 ************") # string(.) 标签套标签 html2 = ‘‘‘ <div id="a"> left <span id="b"> right <ul> up <li>down</li> </ul> east </span> west </div> ‘‘‘# 下面是没有用string方法的输出 selector2 = etree.HTML(html2) con3 = selector2.xpath(‘//div[@id="a"]/text()‘) for i in con3: 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 in con4: # python 输出结果默认是\n,换行,将结尾替换掉即可实现不换行。print(i, end=‘‘) print("\r") print(u"************ 华丽分割符5 ************") # ########### example 4 ############ html3 = """ <div>hello <p>H</p> </div> <div>hehe</div> """ selector3 = etree.HTML(html3) # 使用text()的方法来判别是哪个div标签 con5 = selector3.xpath(‘//div[text()="hehe"]/text()‘) print(con5[0]) print(u"************ 华丽分割符6 ************") # ########### example 5 ############ html4 = """ <div id="utv">hello <p>H</p> <p>J</p> <p>I</p> </div> <div>hehe</div> """ selector4 = etree.HTML(html4) # 在XPath中可以使用多重过滤方法寻找标签,例如ul[3][@id=”a”] 这里使用【3】来寻找第三个ul标签 并且它的id属性值为a con6 = selector4.xpath(‘//div/p[position()>=2]/text()‘) for i in con6: print(i) print(u"************ 华丽分割符7 ************")
原文:http://www.cnblogs.com/hunttown/p/6703791.html
内容总结
以上是互联网集市为您收集整理的利用python脚本(xpath)抓取数据全部内容,希望文章能够帮你解决利用python脚本(xpath)抓取数据所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。