python爬虫:scrapy框架xpath和css选择器语法
Xpath基本语法
一、常用的路径表达式:
表达式 | 描述 | 实例 |
---|---|---|
nodename | 选取nodename节点的所有子节点 | //div |
/ | 从根节点选取 | /div |
// | 选取所有的节点,不考虑他们的位置 | //div |
. | 选取当前节点 | ./div |
.. | 选取当前节点的父节点 | .. |
@ | 选取属性 | //@calss |
举例元素标签为artical标签
语法 | 说明 |
---|---|
artical | 选取所有artical元素的子节点 |
/artical | 选取根元素artical |
./artical | 选取当前元素下的artical |
../artical | 选取父元素下的artical |
artical/a | 选取所有属于artical的子元素a元素 |
//div | 选取所有div 子元素,无论div在任何地方 |
artical//div | 选取所有属于artical的div 元素,无论div元素在artical的任何位置 |
//@class | 选取所有名为class 的属性的 |
a/@href | 选取a标签的href属性 |
a/text() | 选取a标签下的文本 |
string(.) | 解析出当前节点下所有文字 |
string(..) | 解析出父节点下所有文字 |
二、谓语
谓语被嵌在方括号内,用来查找某个特定的节点或包含某个制定的值的节点
语法 | 说明 |
---|---|
/artical/div[1] | 选取所有属于artical 子元素的第一个div元素 |
/artical/div[last()] | 选取所有属于artical子元素的最后一个div元素 |
/artical/div[last()-1] | 选取所有属于artical子元素的倒数第2个div元素 |
/artical/div[position()<3] | 选取所有属于artical子元素的前2个div元素 |
//div[@class] | 选取所有拥有属性为class的div节点 |
//div[@class=”main”] | 选取所有div下class属性为main的div节点 |
//div[price>3.5] | 选取所有div下元素值price大于3.5的节点 |
三、通配符
Xpath通过通配符来选取未知的XML元素
表达式 | 结果 |
---|---|
//* | 选取所有元素 |
//div/* | 选取所有属于div元素的所有子节点 |
//div[@*] | 选取所有带属性的元素 |
四、取多个路径
使用“|”运算符可以选取多个路径
表达式 | 结果 |
---|---|
//div | //table | 选取文档中所有的div和table节点 |
//div/a | //div/p | 选取所有div元素的a和p 元素 |
artical/div/pl | //span | 选取所有div下的pl和文档中所有span |
五、Xpath轴
轴可以定义相对于当前节点的节点集
轴名称 | 表达式 | 描述 |
---|---|---|
ancestor | ./ancestor::* | 选取当前节点的所有先辈节点(父、祖父) |
ancestor-or-self | ./ancestor-or-self::* | 选取当前节点的所有先辈节点以及节点本身 |
descendant | ./descendant::* | 返回当前节点的所有后代节点(子节点、孙节点) |
child | ./child::* | 返回当前节点的所有子节点 |
parent | ./parent::* | 选取当前节点的父节点 |
following | ./following::* | 选取文档中当前节点结束标签后的所有节点 |
following-sibling | ./following-sibling::* | 选取当前节点之后的兄弟节点 |
preceding | ./preceding::* | 选取文档中当前节点开始标签前的所有节点 |
preceding-sibling | ./preceding-sibling::* | 选取当前节点之前的兄弟节点 |
self | ./self::* | 选取当前节点 |
attribute | ./attribute::* | 选取当前节点的所有属性 |
六、功能函数
使用功能函数能够更好的进行模糊搜索
函数 | 用法 | 解释 |
---|---|---|
starts-with | //div[starts-with(@id,”ma”)] | 选取id值以ma开头的div节点 |
contains | //div[contains(@id,”ma”)] | 选取所有id值包含ma的div节点 |
and | //div[contains(@id,”ma”) and contains(@id,”in”)] | 选取id值包含ma和in的div节点 |
text() | //div[contains(text(),”ma”)] | 选取节点文本包含ma的div节点 |
注意事项:
1) 按照审查元素的写法不一定正确,要按照网页源码的才行因为不一样,网页源码才是你看到的2) 浏览器有自带的复制xpath功能,firefox下载firebug插件3) xpath有c的速度,所以按照[@class=""]准确性较高
CCS选择器语法
语法 | 说明 |
---|---|
* | 选择所有节点 |
#container | 选择id为container的节点 |
.container | 选择所有class包含container的节点 |
div,p |
选择所有 div 元素和 所有 p 元素
|
li a | 选取所有li 下所有a节点 |
ul + p | 选取ul后面的第一个p元素 |
div#container > ul | 选取id为container的div的第一个ul子元素 |
ul ~p | 选取与ul相邻的所有p元素 |
a[title] | 选取所有有title属性的a元素 |
a[href=”http://baidu.com”] | 选取所有href属性为http://baidu.com的a元素 |
a[href*=”baidu”] | 选取所有href属性值中包含baidu的a元素 |
a[href^=”http”] | 选取所有href属性值中以http开头的a元素 |
a[href$=”.jpg”] | 选取所有href属性值中以.jpg结尾的a元素 |
input[type=radio]:checked | 选择选中的radio的元素 |
div:not(#container) | 选取所有id为非container 的div属性 |
li:nth-child(3) | 选取第三个li元素 |
li:nth-child(2n) | 选取第偶数个li元素 |
a::attr(href) | 选取a标签的href属性 |
a::text | 选取a标签下的文本 |
关于更多css语法,可以查看
http://www.w3school.com.cn/cssref/css_selectors.asp
提取内容
方法 | 返回 |
---|---|
Selector.xpath() | 返回SelectorList对象 |
Selector.css() | 返回SelectorList对象 |
SelectorList.extract() | 返回List对象 |
SelectorList.extract_first(default) | 返回String对象,可以有默认值,类似dict.get(key, default) |
参考链接:
- 三、用Css来提取网页
- Python爬虫:Xpath语法笔记
python爬虫:scrapy框架xpath和css选择器语法相关推荐
- Python爬虫 scrapy框架爬取某招聘网存入mongodb解析
这篇文章主要介绍了Python爬虫 scrapy框架爬取某招聘网存入mongodb解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 创建项目 sc ...
- python爬虫--Scrapy框架--Scrapy+selenium实现动态爬取
python爬虫–Scrapy框架–Scrapy+selenium实现动态爬取 前言 本文基于数据分析竞赛爬虫阶段,对使用scrapy + selenium进行政策文本爬虫进行记录.用于个人爬虫学习记 ...
- Python爬虫-Scrapy框架(四)- 内置爬虫文件 - 4.2 初探Crawl Spider
Python爬虫-Scrapy框架(四)- 内置爬虫文件 - 4.2 初探Crawl Spider 写在前面 初探Crawl Spider 创建Crawl Spider项目 对比Basic与Crawl ...
- Python爬虫—Scrapy框架—Win10下载安装
Python爬虫-Scrapy框架-Win10下载安装 1. 下载wheel 2.下载twisted 3. 下载pywin32 4. 下载安装Scrapy 5. 创建一个scrapy项目 6. fir ...
- Python爬虫——Scrapy框架
Scrapy是用python实现的一个为了爬取网站数据,提取结构性数据而编写的应用框架.使用Twisted高效异步网络框架来处理网络通信. Scrapy架构: ScrapyEngine:引擎.负责控制 ...
- Python爬虫——scrapy框架介绍
一.什么是Scrapy? Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架,非常出名,非常强悍.所谓的框架就是一个已经被集成了各种功能(高性能异步下载,队列,分布式,解析,持久化等) ...
- Python爬虫——Scrapy框架(附有实战)
大家好!我是霖hero 有一天,我在逛街,突然被一声靓仔打断了我的脚步,回头一看,原来是水果摊阿姨叫我买水果,说我那么靓仔,便宜一点买给我,自恋的我无法拒绝阿姨的一声声靓仔,于是买了很多水果回家,家人 ...
- python爬虫——scrapy框架(介绍)
一.scrapy介绍 Scrapy是用纯Python实现的一个为了爬取网站数据,提取结构性数据而编写的应用框架,我们只需要实现少量的代码,就能快速的抓取. Scrapy使用了 Twisted[ˈtwɪ ...
- python爬虫scrapy框架教程_Python爬虫教程-30-Scrapy 爬虫框架介绍
从本篇开始学习 Scrapy 爬虫框架 Python爬虫教程-30-Scrapy 爬虫框架介绍 框架:框架就是对于相同的相似的部分,代码做到不出错,而我们就可以将注意力放到我们自己的部分了 常见爬虫框 ...
最新文章
- TCP三次握手建立连接四次挥手断开连接
- Acwing第 8 场周赛【未完结】
- 2021-04-02 反步法示例
- No identifier specified for entity没有为实体指定标识符
- tez-site.xml_数字支付系统的未来-Google Tez和音频快速响应
- 服务器克隆机网络端口排错
- Ubuntu下pycharm无法输入中文
- 获取TextView每行的内容 (涉及getLineCount为0,getLineEnd问题)
- 2018.12.18
- StanfordDB class自学笔记 (3) 查询关系型数据库总览
- 汽车抛负载7637-5A/5B测试介绍
- flash 插件 安装
- 支付宝区块链专利申请连续三年全球第一:办事效率提升1万倍
- android截屏图片大小,Android截屏及图片解析
- 怎样在 kibana 中查看 es elasticsearch lucene 的版本
- Go切片(slices)
- 个人如何获取美团外卖推广链接
- whith ~ as 用法
- 使用谷歌Chrome浏览器将网页保存为html格式
- SQLServer触发器的使用
热门文章
- 一键关闭oracle数据库,关闭Oracle数据库的三种方法
- poj3208 Apocalypse Someday (数位dp + 二分)
- Macbook prom1+android虚拟机+pycharm+pytest+appium 实现微信登录
- PostgreSQL数据库头胎——后台一等公民进程StartupDataBase StartupXLOG函数进入Recovery模式
- 【游戏调研】梦幻花园——引领三消新模式
- 微软电脑怎么设置时间服务器地址,如何配置Internet时间设置,让电脑时间与北京时间分秒不差...
- 手机浏览器无法触屏滚动
- 河南慧萌自动化生成系统使用文档
- 如何快速转发朋友圈呢?
- 中创新航拟10月6日上市:天齐锂业与小鹏汽车为基石投资者