Python中Scrapy框架元素选择器XPath的简单实例

原文标题:《Python网络爬虫—Scrapy的选择器Xpath》 对原文有所修改和演绎

优势

XPath相较于CSS选择器,可以更方便的选取

  • 没有id class name属性的标签
  • 属性或文本特征不显著的标签
  • 嵌套层次极其复杂的标签

XPath路径

定位方式

/ 绝对路径 表示从根节点开始选取
// 相对路径 表示从任意节点开始

基本的节点定位

#查找html下的body下的form下的所有input节点
/html/body/form/input

#查找所有input节点
//input

使用通配符*定位

#查找form节点下的所有节点
//form/*#查找所有节点//*

#查找所有input节点(input至少有爷爷辈亲戚节点)
//*/input

使用索引定位

#定位 第8个td下的 第2个a节点
//*/td[7]/a[1]

#定位 第8个td下的 第3个span节点
//*/td[7]/span[2]

#定位 最后一个td下的  最后一个a节点
//*/td[last()]/a[last()]

使用属性

#定位所有包含name属性的input节点
//input[@name]

#定位含有属性的所有的input节点
//input[@*]

#定位所有value=2的input节点
//input[@value=‘2‘]

#使用多个属性定位
//input[@value=‘2‘][@id=‘3‘]
//input[@value=‘2‘ and @id=‘3‘]

使用函数定位

函数 含义
contains(,) 前者中包含后者
text() 获取节点中的字符串
starts-with() 匹配起始位置的字符串

<a class="menu_hot" href="/ads/auth/promote.html">应用推广</a>

#定位href属性中包含“promote.html”的所有a节点
//a[contains(@href,‘promote.html‘)]

#元素内的文本为“应用推广”的所有a节点
//a[text()=‘应用推广‘]

#href属性值是以“/ads”开头的所有a节点
//a[starts-with(@href,‘/ads‘)]

使用XPath轴

这部分类似BeautifulSoup中的sibling、parents、children方法。

轴名称 含义
ancestor 选取当前节点的所有先辈节点
ancestor-or-self 选取当前节点的所有先辈节点及当前节点自己
attribute 选取当前节点的所有属性
child 选取当前节点的所有子节点
descendant 选取当前节点的所有后代节点
descendant-or-self 选取当前节点的所有后代节点及当前节点自己
following 选取党建节点结束后的所有节点
parent 选取当前节点的父节点
preceding-sibling 选取当前节点之前的所有同辈节点
self 选取当前节点自己
原文地址:http://mp.weixin.qq.com/s/UT4UFDpgo2ER300zq_uqsQ

原文地址:https://www.cnblogs.com/zhuxiaoxi/p/8530532.html

时间: 2024-08-29 20:32:33

Python中Scrapy框架元素选择器XPath的简单实例的相关文章

Python中scrapy框架如何安装配置

在python学习群里发现很多学习网络爬虫技术的童靴都搞不懂python爬虫框架scrapy的安装配置,在学习python网络爬虫初级阶段的时候我们利用urllib和urllib2库以及正则表达式就可以完成了,不过遇到更加强大的爬虫工具--爬虫框架Scrapy,这安装过程也是煞费苦心哪,在此整理如下. Windows平台: 我的系统是Win7,首先,你要有Python,我用的是2.7.7版本,Python3相仿,只是一些源文件不同. 官网文档:http://doc.scrapy.org/en/l

python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)

操作环境:python3 在上一文中python爬虫scrapy框架--人工识别登录知乎倒立文字验证码和数字英文验证码(1)我们已经介绍了用Requests库来登录知乎,本文如果看不懂可以先看之前的文章便于理解 本文将介绍如何用scrapy来登录知乎. 不多说,直接上代码: import scrapy import re import json class ZhihuSpider(scrapy.Spider): name = 'zhihu' allowed_domains = ['www.zhi

Python爬虫Scrapy框架入门(2)

本文是跟着大神博客,尝试从网站上爬一堆东西,一堆你懂得的东西 附上原创链接: http://www.cnblogs.com/qiyeboy/p/5428240.html 基本思路是,查看网页元素,填写xpath表达式,获取信息.自动爬取策略是,找到翻页网页元素,获取新链接地址,执行翻页.网页分析部分不再赘述,原博讲的很好很清楚,很涨姿势 基于拿来主义,我们只需要知道怎么更改Scrapy框架就行了~ items.py: import scrapy class TestprojItem(scrapy

基于python的scrapy框架爬取豆瓣电影及其可视化

1.Scrapy框架介绍 主要介绍,spiders,engine,scheduler,downloader,Item pipeline scrapy常见命令如下: 对应在scrapy文件中有,自己增加爬虫文件,系统生成items,pipelines,setting的配置文件就这些. items写需要爬取的属性名,pipelines写一些数据流操作,写入文件,还是导入数据库中.主要爬虫文件写domain,属性名的xpath,在每页添加属性对应的信息等. movieRank = scrapy.Fie

Python爬虫Scrapy框架入门(0)

想学习爬虫,又想了解python语言,有个python高手推荐我看看scrapy. scrapy是一个python爬虫框架,据说很灵活,网上介绍该框架的信息很多,此处不再赘述.专心记录我自己遇到的问题以及解决方案吧. 给几个链接吧,我是根据这几个东西来尝试学习的: scrapy中文文档(0.24版,我学习的时候scrapy已经1.1了,也许有些过时): http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/overview.html 大神的博客介绍:

数据之路 - Python爬虫 - Scrapy框架

一.Scrapy框架入门 1.Scrapy框架介绍 Scrapy是一个基于Twisted的异步处理框架,是纯Python实现的爬虫框架,其架构清晰,榄块之间的榈合程度低,可扩展性极强,可以灵活完成各种需求. Engine:引擎,处理整个系统的数据流处理.触发事务,是整个框架的核心. Item:项目,它定义了爬取结果的数据结构,爬取的数据会被赋值成该Item对象. Scheduler:调度器,接受引擎发过来的请求并将其加入队列中, 在引擎再次请求的时候将请求提供给引擎. Downloader:下载

CSS中模拟父元素选择器

很多情况下,我们需要找到父元素,但可惜的是css中并没有这样的一个选择器. 至于原因可以看张鑫旭的如何在CSS中实现父选择器效果这篇文章. 简单来说这个实现并不是真正的父元素选择器,只是利用其它思路来实现相同效果罢了. HTML: <div id="box"> <p>pppppppp</p> <span></span> </div> CSS: div,p{ margin:0; padding:0; } #box{

python中删除某个元素的3种方法

python中关于删除list中的某个元素,一般有三种方法:remove.pop.del 1.remove: 删除单个元素,删除首个符合条件的元素,按值删除举例说明: >>> str=[1,2,3,4,5,2,6] >>> str.remove(2) >>> str [1, 3, 4, 5, 2, 6] 2.pop: 删除单个或多个元素,按位删除(根据索引删除) ''' 遇到问题没人解答?小编创建了一个Python学习交流QQ群:××× 寻找有志同道合

安装 CentOs 系统 及 Python 及 Scrapy 框架

1: 先安装Centos 系统: 为什么选择CentOs系统,而不选择Ubuntu ? 我在Ubuntu上尝试了三次安装 python 和 Scrapy ,结果都没成功,在运维老王的建议下 使用CentOs ; ( 忍不住吐槽一下,python 安装包 依赖包  安装起来 真费劲! ) 2: CentOs安装过程 整体安装过程比较顺利  ,  比Ubuntu 简单多了 ;  我选择了一个mini的ios 安装之后 也没有 桌面环境 , 挺好 ,符合需求. 安装好之后的界面: 命令行环境 , 挺好