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 ...
随机推荐
- Django 的母板及布局(Bootstrap)
title: Django 的母板及布局(Bootstrap) tags: Django --- Django 的母板及布局(Bootstrap) Django 的母板是作为公共的部分,其他的页面都能 ...
- 重新postgresql出现错误:Problem running post-install step. Installation may not complete correctly. The database cluster initialisation failed.
以前正常使用的postgresql,今天出现问题:报*.dll错误.百度了一下,只能重新安装 . 在重新安装过程中报:Problem running post-install step. Instal ...
- 安装搭配VUE使用的UI框架ElementUI
可以搭配vue的UI框架有几个,我用的是element-ui,现在呢,我要在复习一遍 1.vue init webpack-simple element-ui2.cd element-ui3.npm ...
- ORACLE的SQL JOIN方式大全
ORACLE的SQL JOIN方式大全 在ORACLE数据库中,表与表之间的SQL JOIN方式有多种(不仅表与表,还可以表与视图.物化视图等联结),官方的解释如下所示 A join is a que ...
- 01_10_Struts2_2.1.6版本的中文问题
01_10_Struts2_2.1.6版本的中文问题 1. 由于Struts2_2.1.6存在bug 正常情况下在struts.xml配置如下一行 <constant name="st ...
- NOIP模拟赛 混合图
[题目描述] Hzwer神犇最近又征服了一个国家,然后接下来却也遇见了一个难题. Hzwer的国家有n个点,m条边,而作为国王,他十分喜欢游览自己的国家.他一般会从任意一个点出发,随便找边走,沿途欣赏 ...
- 使用虚拟环境来管理python的包
1.背景 在开发python项目的过程中,我们会用到各种各样的包,我们使用pip来管理包,请看下图我们刚装好python解释器时已安装的包: 但是随着我们疯狂的使用pip install xxx后,系 ...
- 使用jquery清除select中的所有option
html代码 <select id="search"> <option>baidu</option> <option>sogou&l ...
- 学习路由器vue-router
vue-router:vue官方路由管理器. 功能:嵌套的路由/视图表模块化的.基于组件的路由配置路由参数.查询.通配符基于 Vue.js 过渡系统的视图过渡效果细粒度的导航控制带有自动激活的 CSS ...
- 【php】【特殊案例】数组调用方法
As of PHP 5.4.0, you can call any callable stored in a variable. <?php class Foo { static functio ...