Python——XPath使用
一:XPath介绍
XPath全称XML路径语言,用于确定XML文档中某部分位置。XPath基于XML树状结构,在树中寻找结点。
现在,一般使用XPath在XML中查找、提取信息,同时,它也支持HTML。所以,我们可以用XPath取代正则表达式来提取信息。
XPath通过元素以及属性进行导航。
二:XPath使用大概步骤
1:安装lxml模块
2:导入树形结构
from lxml import etree
3:把requests抓取的网页转化为树形结构
selector=etree.HTML(网页源码)
4:从树形结构中查找信息
selector.xpath(查找条件)
三:实战
Xpath提取内容:
手动分析法:右键网页—>审查元素—>点击左侧的树结构,逐层展开找到自己需要抓取的内容,这个逐层元素标签构成的路径就是目标元素的路径
谷歌浏览器生成法::右键网页—>审查元素—>点击左侧的树结构,逐层展开找到自己需要抓取的内容—>右键目标元素弹出菜单,选择“copy xpath”,即可获取目标元素的路径
观察可知,XPath提取内容的规律:
// 定位根节点
/ 进入下一层
/text() 获取当前层文本内容
/@XXX 获取XXX属性值
#coding:utf8
from lxml import etree
import requests #连接到网页获取源码
html=requests.get("http://www.74xw.com/")
html.encoding='utf-8'
str=html.text
#转为树形结构
selector=etree.HTML(str)
#使用xpath提取内容
titles=selector.xpath("/html/body/div[2]/div[1]/div[2]/div/a/@title")
for title in titles:
print title
四:特殊情况处理
相同字符开头的标签如何处理?
使用start-with(@属性名,属性值中开头相同的部分)
content=html.xpath("//div[start-with(@id,"class-")]/text()")
标签嵌套标签如何处理?
使用先抓大,再抓小的法则以及string(.):
data=html.xpath("//大标签")[0] #抓大
info=data.xpath('string(.)') #抓小(含\n与空格)
str=info.replace('\n','').replace(' ','') #把\n 与 空格 处理掉
print str
Python——XPath使用的更多相关文章
- 使用python+xpath 获取https://pypi.python.org/pypi/lxml/2.3/的下载链接
使用python+xpath 获取https://pypi.python.org/pypi/lxml/2.3/的下载链接: 使用requests获取html后,分析html中的标签发现所需要的链接在& ...
- Python Xpath语法
Python Xpath语法 一.选取节点 常用的路劲表达式: 表达式 描述 实例 nodename 选取nodename节点的所有子节点 xpath('//div') 选取了div节点 ...
- python xpath
提取Item 选择器介绍 我们有很多方法从网站中提取数据.Scrapy 使用一种叫做 XPath selectors的机制,它基于 XPath表达式.如果你想了解更多selectors和其他机制你可以 ...
- 15-糗事百科(python+xpath)
爬取糗事百科的段子: 1.用xpath分析首要爬去内容的表达式: 2.用发起请求,获得原码: 3.用xpath分析源码,提取有用信息: 4.由python格式转为json格式,写入文件 #_*_ co ...
- selenium3 + python - xpath定位
什么是xpath呢? 官方介绍:XPath即为XML路径语言,它是一种用来确定XML1(标准通用标记语言3的子集)文档中某部分位置的语言.反正小编看这个介绍是云里雾里的,通俗一点讲就是通过元素的路径来 ...
- python xpath学习
一.选取节点: 二.谓词: 注意:在scrapy中用xpath进行搜索时,如果使用相对路径,要加上.,如,不然搜索的是整个文档.
- python+xpath+requests爬取维基百科历史上的今天
import requests import urllib.parse import datetime from lxml import etree fhout = open("result ...
- 13-爬取百度贴吧中的图片(python+xpath)
通过xpath分析页面,爬取页面中的图片: #_*_ coding: utf-8 _*_ ''' Created on 2018年7月15日 @author: sss function: 使用xpat ...
- Python Xpath 提取html整个元素(标签与内容)
提取html某标签中文字时,文字中含有:“<sub>2</sub>O<sub>5</sub>”,导致提取的文字不符合预期. 解决方法: #coding= ...
随机推荐
- REQUEST_TIMEOUT 解决方案
you need to pass an npmrc file when you install the business network onto the peers. For more info s ...
- Spring注解详解@Repository、@Component、@Service 和 @Constroller
概述 注释配置相对于 XML 配置具有很多的优势: 它可以充分利用 Java 的反射机制获取类结构信息,这些信息可以有效减少配置的工作.如使用 JPA 注释配置 ORM 映射时,我们就不需要指定 PO ...
- 用java打暴雪星际争霸(2)——执行測试机器人
原创内容.转载请注明. 在上一节安装完成后.或者您直接打开我分享的虚拟机后,我如今将解说怎样启动測试机器人. 第一步,打开Eclipse,导入机器人演示样例项目,如图所看到的. 第二步,我们能够看到就 ...
- JavaScript:String 对象
ylbtech-JavaScript:String 对象 1.返回顶部 String 对象 String 对象用于处理文本(字符串). 创建 String 对象的语法: new String(s); ...
- SharePoint自定义程序页面部署 不用重启IIS
SharePoint的部署方式默认是部署WSP包,尤其是有多个前端的时候WSP包的部署显得非常方便和快捷,但是WSP的部署需要重启整个IIS服务会造成SharePoint站点一段时间不能访问.结合自己 ...
- 构建配置 defaultConfig signingConfigs buildTypes productFlavors dependencies
测试项目位置:https://github.com/baiqiantao/FragmentTest.git 项目结构: project 目录的 build.gradle 文件 // Top-level ...
- Vue背景图打包之后访问路径错误
问题背景:项目里面有用到背景图片,开发模式下正常,打包之后发现报404错误.查看发现是背景图片引用路径出错. 解决方法: .map { width: %; height: 397px; backgro ...
- Python科学计算技巧积累四——双y轴图像绘制
双y轴图像具有单y轴图像没有的对比效果,在MATLAB中有plotyy函数可以实现,Python的实现方式没有MATLAB那样方便,不过实现效果却也不见得差. 以往我常用的绘图命令是import ma ...
- Android -- SpannableString
SpannableString Android通过SpannableString类来对EditText和TextView的指定文本进行处理. ForegroundColorSpan 文本颜色 priv ...
- Android -- ViewPager切换动画,PageTransformer
transformPage(View view, float position) view就是滑动中的那个view,position这里是float类型,是当前滑动状态的一个表示,比如当滑动到正全屏时 ...