Python爬虫扩展库scrapy选择器用法入门(一)
关于BeutifulSoup4的用法入门请参考Python爬虫扩展库BeautifulSoup4用法精要,scrapy爬虫案例请参考Python使用Scrapy爬虫框架爬取天涯社区小说“大宗师”全文,爬虫原理请参考Python不使用scrapy框架而编写的网页爬虫程序
本文代码运行环境为Python 3.6.1+scrapy 1.3.0。
>>> import scrapy
# 测试样本
>>> html = '''
<html>
<head>
<base href='http://example.com/'/>
<title>Example website</title>
</head>
<body>
<div id='images'>
<a href='image1.html'>Name: My image 1 <br /><img src='image1_thumb.jpg' /></a>
<a href='image2.html'>Name: My image 2 <br /><img src='image2_thumb.jpg' /></a>
<a href='image3.html'>Name: My image 3 <br /><img src='image3_thumb.jpg' /></a>
<a href='image4.html'>Name: My image 4 <br /><img src='image4_thumb.jpg' /></a>
<a href='image5.html'>Name: My image 5 <br /><img src='image5_thumb.jpg' /></a>
<a href='test.html'>This is a test.</a>
</div>
</body>
</html>
'''
# 创建选择器对象
>>> sel = scrapy.selector.Selector(text=html)
# 查看title标签
>>> sel.xpath('//title').extract()
['<title>Example website</title>']
# 查看标签title的文本
>>> sel.xpath('//title/text()').extract()
['Example website']
# 使用等价的CSS选择器
>>> sel.css('title::text').extract()
['Example website']
# 查看所有href和src链接
>>> sel.xpath('//@href').extract()
['http://example.com/', 'image1.html', 'image2.html', 'image3.html', 'image4.html', 'image5.html', 'test.html']
>>> sel.xpath('//@src').extract()
['image1_thumb.jpg', 'image2_thumb.jpg', 'image3_thumb.jpg', 'image4_thumb.jpg', 'image5_thumb.jpg']
# 查看base标签中的链接地址
>>> sel.xpath('//base/@href').extract()
['http://example.com/']
>>> sel.css('base::attr(href)').extract()
['http://example.com/']
# 查看所有标签a
>>> sel.xpath('//a').extract()
['<a href="image1.html">Name: My image 1 <br><img src="data:image1_thumb.jpg"></a>', '<a href="image2.html">Name: My image 2 <br><img src="data:image2_thumb.jpg"></a>', '<a href="image3.html">Name: My image 3 <br><img src="data:image3_thumb.jpg"></a>', '<a href="image4.html">Name: My image 4 <br><img src="data:image4_thumb.jpg"></a>', '<a href="image5.html">Name: My image 5 <br><img src="data:image5_thumb.jpg"></a>', '<a href="test.html">This is a test.</a>']
# 要求标签a的href属性中含有image字符串
>>> sel.xpath('//a[contains(@href, "image")]').extract()
['<a href="image1.html">Name: My image 1 <br><img src="data:image1_thumb.jpg"></a>', '<a href="image2.html">Name: My image 2 <br><img src="data:image2_thumb.jpg"></a>', '<a href="image3.html">Name: My image 3 <br><img src="data:image3_thumb.jpg"></a>', '<a href="image4.html">Name: My image 4 <br><img src="data:image4_thumb.jpg"></a>', '<a href="image5.html">Name: My image 5 <br><img src="data:image5_thumb.jpg"></a>']
# 查看符合条件的标签a的文本
>>> sel.xpath('//a[contains(@href, "image")]/text()').extract()
['Name: My image 1 ', 'Name: My image 2 ', 'Name: My image 3 ', 'Name: My image 4 ', 'Name: My image 5 ']
# 使用正则表达式
>>> sel.xpath('//a[contains(@href, "image")]/text()').re('Name:\s*(.*)')
['My image 1 ', 'My image 2 ', 'My image 3 ', 'My image 4 ', 'My image 5 ']
>>> sel.xpath('//a[contains(@href, "image")]/@href').extract()
['image1.html', 'image2.html', 'image3.html', 'image4.html', 'image5.html']
>>> sel.xpath('//a/@href').extract()
['image1.html', 'image2.html', 'image3.html', 'image4.html', 'image5.html', 'test.html']
>>> sel.css('a[href*=image] ::attr(href)').extract()
['image1.html', 'image2.html', 'image3.html', 'image4.html', 'image5.html']
>>> sel.css('a[href*=image] img::attr(src)').extract()
['image1_thumb.jpg', 'image2_thumb.jpg', 'image3_thumb.jpg', 'image4_thumb.jpg', 'image5_thumb.jpg']
>>> sel.xpath('//img/@src').extract()
['image1_thumb.jpg', 'image2_thumb.jpg', 'image3_thumb.jpg', 'image4_thumb.jpg', 'image5_thumb.jpg']
>>> sel.xpath('//a[contains(@href, "image")]/img/@src').extract()
['image1_thumb.jpg', 'image2_thumb.jpg', 'image3_thumb.jpg', 'image4_thumb.jpg', 'image5_thumb.jpg']
# href属性包含image1的a标签中img标签的src属性值
>>> sel.xpath('//a[contains(@href, "image1")]/img/@src').extract()
['image1_thumb.jpg']
热烈庆祝拙作《Python可以这样学》出版3个月荣登亚马逊Python新品排行榜第2位
Python爬虫扩展库scrapy选择器用法入门(一)相关推荐
- Python爬虫扩展库BeautifulSoup4用法精要
BeautifulSoup是一个非常优秀的Python扩展库,可以用来从HTML或XML文件中提取我们感兴趣的数据,并且允许指定使用不同的解析器.由于beautifulsoup3已经不再继续维护,因此 ...
- Python爬虫 --- 2.2 Scrapy 选择器的介绍
原文链接:www.fkomm.cn/article/201- 在使用Scrapy框架之前,我们必须先了解它是如何筛选数据的 Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通 ...
- 【Python爬虫必备—>Scrapy框架快速入门篇——上】
目录
- Python爬虫5.3 — scrapy框架spider[Request和Response]模块的使用
Python爬虫5.3 - scrapy框架spider[Request和Response]模块的使用 综述 Request对象 scrapy.Request()函数讲解: Response对象 发送 ...
- python爬虫之PyQuery的常用用法
安装依旧很简单pip install pyquery,对于pycharm的安装看这篇pycharm安装第三方库 首先我们定义一个HTML文本段作为下边的例子 <html><head& ...
- Python爬虫 —— urllib库的使用(get/post请求+模拟超时/浏览器)
Python爬虫 -- urllib库的使用(get/post请求+模拟超时/浏览器) 这里写目录标题 Python爬虫 -- urllib库的使用(get/post请求+模拟超时/浏览器) 1.Py ...
- Python线性代数扩展库numpy.linalg中几个常用函数
本文内容节选自董付国老师2000页Python系列课件第17章"数据分析.科学计算.可视化.机器学习"(本章PPT共410页). ----------相关阅读---------- ...
- Python使用扩展库numpy计算矩阵加权平均值
本文介绍Python扩展库numpy的函数average()的用法. >>> import numpy as np # 创建二维矩阵 >>> x = np.matr ...
- 已解决(Python爬虫requests库报错 请求异常SSL错误,证书认证失败问题)requests.exceptions.SSLError: HTTPSConnectionPool
成功解决(Python爬虫requests库报错 请求异常,SSL错误,证书认证失败问题)requests.exceptions.SSLError: HTTPSConnectionPool(host= ...
最新文章
- python 中*args 和 **kwargs的区别
- 国外AI教学网红网站
- JQuery 表单验证--jquery validation
- linux进程管理之进程创建
- centos php配置mysql数据库_CentOS+Nginx+PHP+MySQL详细配置(图解)
- 4.8地铁查询开发进度
- PTA 寻宝路线 (40 point(s))
- java面试常考_JAVA面试常考系列十
- if函数python作用_if __name__== __main__ 的意思(作用)python代码复用
- duet设置_一秒把平板变 PC 电脑的扩展屏幕:TwomonUSB Duet Display 对比评测
- 谷歌浏览器最好用的10款扩展应用程序
- 嗅探技术---网络安全入门笔记DAY5
- 人教版计算机三年级教学目标,人教版三年级信息技术教学计划.doc
- python网络编程中,Cisco packet tracer 中两个交换机和一个路由器的配置
- Win11右键怎么直接打开所有选项?
- Qt5 多国语言设置
- 马云:房价熄火,2020年或再现一个“暴利”行业,将造就一波新的财富传奇
- 全屏在线秒表_在线秒表
- stack Overflow 的使用
- linux进程线程同步之 - POSIX线程互斥锁
热门文章
- plsql只提交存储过程里的事务_plsql 存储过程 事务
- java面向对象上机题库_Java面向对象编程上机-练习题汇总
- 我的世界服务器启动后自动关闭,求解,服务器老师莫名其妙自动关闭,为什么会这样呢?...
- ideahtml里面没有提示_抖音上爆火的苹果充电提示音,安卓手机也可以设置了!!...
- 计算机系统应用系统,计算机系统应用.pdf
- 雅思阅读真经总纲_你们要的刘洪波《雅思阅读真经总纲》高清PDF扫描版来了!!...
- Ssm手机电脑自适应新闻博客系统实战开发
- 基于JAVA+SSH+MYSQL的工资管理系统
- ASP.NET Core学习——6
- python学习笔记8-列表、集合、字典推导式