关于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选择器用法入门(一)相关推荐

  1. Python爬虫扩展库BeautifulSoup4用法精要

    BeautifulSoup是一个非常优秀的Python扩展库,可以用来从HTML或XML文件中提取我们感兴趣的数据,并且允许指定使用不同的解析器.由于beautifulsoup3已经不再继续维护,因此 ...

  2. Python爬虫 --- 2.2 Scrapy 选择器的介绍

    原文链接:www.fkomm.cn/article/201- 在使用Scrapy框架之前,我们必须先了解它是如何筛选数据的 Scrapy提取数据有自己的一套机制,被称作选择器(selectors),通 ...

  3. 【Python爬虫必备—>Scrapy框架快速入门篇——上】

    目录

  4. Python爬虫5.3 — scrapy框架spider[Request和Response]模块的使用

    Python爬虫5.3 - scrapy框架spider[Request和Response]模块的使用 综述 Request对象 scrapy.Request()函数讲解: Response对象 发送 ...

  5. python爬虫之PyQuery的常用用法

    安装依旧很简单pip install pyquery,对于pycharm的安装看这篇pycharm安装第三方库 首先我们定义一个HTML文本段作为下边的例子 <html><head& ...

  6. Python爬虫 —— urllib库的使用(get/post请求+模拟超时/浏览器)

    Python爬虫 -- urllib库的使用(get/post请求+模拟超时/浏览器) 这里写目录标题 Python爬虫 -- urllib库的使用(get/post请求+模拟超时/浏览器) 1.Py ...

  7. Python线性代数扩展库numpy.linalg中几个常用函数

    本文内容节选自董付国老师2000页Python系列课件第17章"数据分析.科学计算.可视化.机器学习"(本章PPT共410页). ----------相关阅读---------- ...

  8. Python使用扩展库numpy计算矩阵加权平均值

    本文介绍Python扩展库numpy的函数average()的用法. >>> import numpy as np # 创建二维矩阵 >>> x = np.matr ...

  9. 已解决(Python爬虫requests库报错 请求异常SSL错误,证书认证失败问题)requests.exceptions.SSLError: HTTPSConnectionPool

    成功解决(Python爬虫requests库报错 请求异常,SSL错误,证书认证失败问题)requests.exceptions.SSLError: HTTPSConnectionPool(host= ...

最新文章

  1. python 中*args 和 **kwargs的区别
  2. 国外AI教学网红网站
  3. JQuery 表单验证--jquery validation
  4. linux进程管理之进程创建
  5. centos php配置mysql数据库_CentOS+Nginx+PHP+MySQL详细配置(图解)
  6. 4.8地铁查询开发进度
  7. PTA 寻宝路线 (40 point(s))
  8. java面试常考_JAVA面试常考系列十
  9. if函数python作用_if __name__== __main__ 的意思(作用)python代码复用
  10. duet设置_一秒把平板变 PC 电脑的扩展屏幕:TwomonUSB Duet Display 对比评测
  11. 谷歌浏览器最好用的10款扩展应用程序
  12. 嗅探技术---网络安全入门笔记DAY5
  13. 人教版计算机三年级教学目标,人教版三年级信息技术教学计划.doc
  14. python网络编程中,Cisco packet tracer 中两个交换机和一个路由器的配置
  15. Win11右键怎么直接打开所有选项?
  16. Qt5 多国语言设置
  17. 马云:房价熄火,2020年或再现一个“暴利”行业,将造就一波新的财富传奇
  18. 全屏在线秒表_在线秒表
  19. stack Overflow 的使用
  20. linux进程线程同步之 - POSIX线程互斥锁

热门文章

  1. plsql只提交存储过程里的事务_plsql 存储过程 事务
  2. java面向对象上机题库_Java面向对象编程上机-练习题汇总
  3. 我的世界服务器启动后自动关闭,求解,服务器老师莫名其妙自动关闭,为什么会这样呢?...
  4. ideahtml里面没有提示_抖音上爆火的苹果充电提示音,安卓手机也可以设置了!!...
  5. 计算机系统应用系统,计算机系统应用.pdf
  6. 雅思阅读真经总纲_你们要的刘洪波《雅思阅读真经总纲》高清PDF扫描版来了!!...
  7. Ssm手机电脑自适应新闻博客系统实战开发
  8. 基于JAVA+SSH+MYSQL的工资管理系统
  9. ASP.NET Core学习——6
  10. python学习笔记8-列表、集合、字典推导式