scrapy 中用selector来提取数据的用法
一. 基本概念
from scrapy import Selector
body= '<html><head><title>Hello World</title></head><body></body> </ html> ’
selector = Selector(text=body)
title = selector.xpath('//title/text()').extract_first()
print(title) 输出为
Hello World
<html>
<head>
<base href='http://example.com/' />
<title>Example website</title>
</head>
<body>
<div id='images'>
<a href='image1.html'>Name: My image <br /><img src='image1_thumb.jpg' /></a>
<a href='image2.html'>Name: My image <br /><img src='image2_thumb.jpg' /></a>
<a href='image3.html'>Name: My image <br /><img src='image3_thumb.jpg' /></a>
<a href='image4.html'>Name: My image <br /><img src='image4_thumb.jpg' /></a>
<a href='image5.html'>Name: My image <br /><img src='image5_thumb.jpg' /></a>
</div>
</body>
</html>
二. scrapy shell中有内置选择器response.selector,可用于提取网页信息,几个例子如下
1. xpath和css的基本用法
#获取<title>的文本值,其中第一个selector字符可以不写
response.selector.xpath('//title/text()').extract_first()response.selector.css('title::text').extract_first() #获取a标签的href属性值
response.xpath('//a/@href').extract()
response.css('a::attr(href)').extract() #查找属性名称包含image字样的所有a标签
response.xpath('//a[contains(@href, "image")]/@href').extract()
response.css('a[href*=image]::attr(href)').extract() #查找属性名称包含image字样的所有a标签,并且在下级img目录下的src属性值
response.xpath('//a[contains(@href, "image")]/img/@src').extract()
response.css('a[href*=image] img::attr(src)').extract() #结合正则表达式提取所需内容
response.css('a::text').re('Name\:(.*)') #提取(.*)代表的内容
response.css('a::text').re_first('Name\:(.*)').strip() #提取第一个(.*)代表的内容,strip()去除首尾空格
2. xpath和css也可以一起用
#先选上src属性标签
response.xpath('//div[@id="images"]').css('img::attr(src)'))
#提取相应信息
response.xpath('//div[@id="images"]').css('img::attr(src)')).extract() #得到多个字符值
response.xpath('//div[@id="images"]').css('img::attr(src)')).extract_first() #得到一个字符值
response.xpath('//div[@id="images"]').css('img::attr(src)')).extract_first(default='') #如果没提取到返回默认值
scrapy 中用selector来提取数据的用法的更多相关文章
- 在scrapy中利用Selector来提取数据
1.创建对象 Selector类的实现位于scrapy.selector模块,创建Selector对象的时候,可以将页面的Html文档字符串传递给Selector构造器方法 2.选中数据 调用Sele ...
- BeautifulSoup4 提取数据爬虫用法详解
Beautiful Soup 是一个HTML/XML 的解析器,主要用于解析和提取 HTML/XML 数据. 它基于 HTML DOM 的,会载入整个文档,解析整个 DOM树,因此时间和内存开销都会大 ...
- scrapy框架Selector提取数据
从页面中提取数据的核心技术是HTTP文本解析,在python中常用的模块处理: BeautifulSoup 非常流行的解析库,API简单,但解析的速度慢. lxml 是一套使用c语言编写的xml解析 ...
- scrapy之使用LinkExtractor提取链接
一.概述: 在页面含有少量链接时,使用selector来提取信息就可以,但如果链接特别多时,就需要用LinkExtractor来提取. 二.LinkExtractor构造器的各个参数: 1.allow ...
- Scrapy 框架(二)数据的持久化
scrapy数据的持久化(将数据保存到数据库) 一.建立项目 1.scrapy startproject dushu 2.进入项目 cd dushu 执行:scrapy genspider -t cr ...
- scrapy中Selector的使用
scrapy的Selector选择器其实也可以用来解析,今天主要总结下css和xpath的用法,其实我个人最喜欢用css 以慕课网嵩天老师教程中的一个网页为例,python123.io/ws/demo ...
- [数据科学] 从csv, xls文件中提取数据
在python语言中,用丰富的函数库来从文件中提取数据,这篇博客讲解怎么从csv, xls文件中得到想要的数据. 点击下载数据文件http://seanlahman.com/files/databas ...
- Python中用format函数格式化字符串的用法
这篇文章主要介绍了Python中用format函数格式化字符串的用法,格式化字符串是Python学习当中的基础知识,本文主要针对Python2.7.x版本,需要的朋友可以参考下 自python2. ...
- mysql 导出表结构和表数据 mysqldump用法
mysql 导出表结构和表数据 mysqldump用法 命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; 导出整个数据库结构和数据mysq ...
随机推荐
- awk编程基础
一.awk介绍 awk(名字来源于三个创始人姓氏首字母)是linux系统下文本编辑工具,是一门编程语言,有自己的基本语法和流程控制.函数.awk简单高效. 二.awk的运行方法 例子:使用冒号:分 ...
- docker1.9 network跨主机安装
背景:在跨host中,如果docker任何一个重启或者销毁,docker暴露的端口以及ip将可能重新配置,这个时候需要重新记录ip跟端口.在生产环境中往往需要一个固定的ip以及端口去跟容器通信.例如m ...
- vnc安装
安装命令:yum install tigervnc-server 一.启动VNC服务 输入命令 vncserver ps -ef|grep Xvnc vncserver -geometry 800x6 ...
- [DT] 数据结构术语中英文对照
数据结构术语中英文对照 数据 Data 数据元素 Data element 数据项 Data item 数据结构 Data structure 逻辑结构 Logical structure 数据类型 ...
- python 类函数
81定义: class 类名(object):# __init__(self, 参数列表): # __init__叫构造函数,其作用:使用类实例对象时,自动调用_init_,起到对象进行初始化, ...
- java关于split分割字符串,空的字符串不能得到的问题
java关于split分割字符串,空的字符串不能得到的问题 class T { public static void main(String args[]) { String num[] = ne ...
- 20169221 2016-2017-2《移动平台与android开发》学习总结
每周作业连接汇总 第一周<Intellj IDEA 简易教程>学习,码云的基础使用.由于第一次写作业,网络攻防作业占据了我整个周四周五周六的时间这周java时间被挤没了,所以没有完成所有学 ...
- oracle树形语句
oracle树查询的最重要的就是select…start with…connect by…prior语法了.依托于该语法,我们可以将一个表形结构的以树的顺序列出来.在下面列述了oracle中树型查询的 ...
- [Erlang34]erlang.mk的源码阅读1-入门makefile
通过erlang.mk项目,掌握基本的makefile语法,可以自己定制makefile. 1. makefile 基本规则: 1. 所有的源文件没有被编译过,则对各个源文件进行编译并进行链接,生成最 ...
- CheckBox使用记录
页面显示 页面代码 <div> <div><input type="checkbox" value="" class=" ...