scrapy之Selectors
练习url:https://doc.scrapy.org/en/latest/_static/selectors-sample1.html
一 获取文本值
xpath
In []: response.selector.xpath('//title/text()').extract_first(default='')
Out[]: 'Example website'
css
In []: response.selector.css('title::text').extract_first(default='')
Out[]: 'Example website'
注:可以省略写成:response.xpath()
二 获取属性值
xpath
In []: response.selector.xpath('//base/@href').extract_first()
Out[]: 'http://example.com/'
css
In []: response.selector.css('base::attr(href)').extract_first()
Out[]: 'http://example.com/'
注: 可以省略写成:response.css
三 xpath,css嵌套使用
因为css,xpath返回的是 SelectorList 实例,所有可以嵌套便捷的使用。
ps:获取属性,xpath,@已经实现, 并不需要 /text()
In []: response.selector.css('img').xpath('@src').extract()
Out[]:
['image1_thumb.jpg',
'image2_thumb.jpg',
'image3_thumb.jpg',
'image4_thumb.jpg',
'image5_thumb.jpg']
四 .re()
.re()
.re_first()
ps :返回的是unicode构成的列表,所以,不能嵌套使用 .re()
In []: response.selector.css('div > p:nth-of-type(2)::text').extract()
Out[]: ['333xxx']
In []: response.selector.css('div > p:nth-of-type(2)::text').extract_first()
Out[]: '333xxx'
In []: response.selector.css('div > p:nth-of-type(2)::text').re_first('\w+')
Out[]: '333xxx'
In []: response.selector.css('div > p:nth-of-type(2)::text').re_first('[A-Za-z]+')
Out[]: 'xxx'
In []: response.selector.css('div > p:nth-of-type(2)::text').re('[A-Za-z]+')
Out[]: ['xxx']
五 关于Xpath的相对路径查找的注意
查找div标签下p标签
<html lang="zh-CN">
<head>
</head>
<body>
<p></p>
<div>
<p></p>
<p></p>
</div>
</body>
</html>
错误做法:
In []: divs = response.selector.xpath('//div')
In []: for p in divs.xpath('//p'):
...: print(p.extract())
...:
<p></p>
<p></p>
<p></p>
正确做法 1:
In []: divs = response.selector.css('div')
In []: for p in divs.xpath('.//p'):
...: print(p.extract())
...:
...:
<p></p>
<p></p>
正确做法 2:
In []: divs = response.selector.css('div')
In []: for p in divs.xpath('p'):
...: print(p.extract())
...:
...:
...:
<p></p>
<p></p>
scrapy之Selectors的更多相关文章
- python爬虫scrapy的Selectors参考文档
http://doc.scrapy.org/en/1.0/topics/selectors.html#topics-selectors-htmlcode
- Scrapy里Selectors 四种基础的方法
在Scrapy里面,Selectors 有四种基础的方法xpath():返回一系列的selectors,每一个select表示一个xpath参数表达式选择的节点css():返回一系列的selector ...
- scrapy的selectors
from scrapy import Selector >>> doc = """ ... <div> ... <ul> ...
- 【Scrapy】Selectors
Constructing selectors For convenience,response objects exposes a selector on .selector attribute,it ...
- Scrapy Selectors 选择器
0. 1.参考 <用Python写网络爬虫>——2.2 三种网页抓取方法 re / lxml / BeautifulSoup 需要注意的是,lxml在内部实现中,实际上是将CSS选择器转 ...
- Scrapy进阶知识点总结(二)——选择器Selectors
1. Selectors选择器 在抓取网页时,您需要执行的最常见任务是从HTML源提取数据.有几个库可用于实现此目的,例如: BeautifulSoup是Python程序员中非常流行的Web抓取库,它 ...
- Scrapy框架——介绍、安装、命令行创建,启动、项目目录结构介绍、Spiders文件夹详解(包括去重规则)、Selectors解析页面、Items、pipelines(自定义pipeline)、下载中间件(Downloader Middleware)、爬虫中间件、信号
一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可 ...
- scrapy框架之Selectors选择器
Selectors(选择器) 当您抓取网页时,您需要执行的最常见任务是从HTML源中提取数据.有几个库可以实现这一点: BeautifulSoup是Python程序员中非常流行的网络抓取库,它基于HT ...
- Scrapy 爬虫 使用指南 完全教程
scrapy note command 全局命令: startproject :在 project_name 文件夹下创建一个名为 project_name 的Scrapy项目. scrapy sta ...
随机推荐
- Exchange邮箱搭建
出现的问题: System.Runtime.InteropServices.COMException(0x8004020F): The server rejected one or more reci ...
- MySql下最好用的数据库管理工具是哪个
MySql下最好用的数据库管理工具是哪个? 维基上有个很全的列表: https://en.wikipedia.org/wiki/Comparison_of_database_tools 1. ph ...
- Core BlueTooth官方文档翻译
本⽂文是苹果<Core Bluetooth Programming Guide>的翻译. 关于Core Bluetooth Core Bluetooth 框架提供了蓝⽛牙低功耗⽆无线设备与 ...
- C语言预处理_05
凡是以 “#”开头的均为预处理命令! 其定义的一般形式为: #define 标示符 字符串 对于宏定义说明以下几点: 1.宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种 ...
- skimage学习(一)
skimage即是Scikit-Image.基于python脚本语言开发的数字图片处理包 skimage包由许多的子模块组成,各个子模块提供不同的功能.主要子模块列表如下: data子模块学习 导入d ...
- redis学习笔记(1)
最近在学习redis,做了比较详细的学习笔记,分享给大家,欢迎一起讨论和学习 第一部分,简单介绍redis 和 redis的基本操作 NoSQL的特点 : 数据库种类繁多,但是一个共同的特点都是去掉关 ...
- Java中将字符串与unicode的相互转换工具类
unicode编码规则 unicode码对每一个字符用4位16进制数表示.具体规则是:将一个字符(char)的高8位与低8位分别取出,转化为16进制数,如果转化的16进制数的长度不足2位,则在其后补0 ...
- ASP.NET Web网站中App_Code文件夹的作用及使用场景
原文地址:Web Site项目和ASP.NET Web Application中App_Code文件夹的作用作者:宾的宾 我现在要建一个ASP.NET的网站了,不难吧,开始动手.如下图: 这种方法建立 ...
- 思维水题:UVa512-Spreadsheet Tracking
Spreadsheet Tracking Data in spreadsheets are stored in cells, which are organized in rows (r) and c ...
- Linux学习-延伸正则表达式
grep 默认仅支持基础正则表达式,如果要使用延伸型正则 表达式,你可以使用 grep -E , 不过更建议直接使用 egrep !直接区分指令比较好记忆!其 实 egrep 与 grep -E 是类 ...