练习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的更多相关文章

  1. python爬虫scrapy的Selectors参考文档

    http://doc.scrapy.org/en/1.0/topics/selectors.html#topics-selectors-htmlcode

  2. Scrapy里Selectors 四种基础的方法

    在Scrapy里面,Selectors 有四种基础的方法xpath():返回一系列的selectors,每一个select表示一个xpath参数表达式选择的节点css():返回一系列的selector ...

  3. scrapy的selectors

    from scrapy import Selector >>> doc = """ ... <div> ...     <ul> ...

  4. 【Scrapy】Selectors

    Constructing selectors For convenience,response objects exposes a selector on .selector attribute,it ...

  5. Scrapy Selectors 选择器

    0. 1.参考 <用Python写网络爬虫>——2.2 三种网页抓取方法  re / lxml / BeautifulSoup 需要注意的是,lxml在内部实现中,实际上是将CSS选择器转 ...

  6. Scrapy进阶知识点总结(二)——选择器Selectors

    1. Selectors选择器 在抓取网页时,您需要执行的最常见任务是从HTML源提取数据.有几个库可用于实现此目的,例如: BeautifulSoup是Python程序员中非常流行的Web抓取库,它 ...

  7. Scrapy框架——介绍、安装、命令行创建,启动、项目目录结构介绍、Spiders文件夹详解(包括去重规则)、Selectors解析页面、Items、pipelines(自定义pipeline)、下载中间件(Downloader Middleware)、爬虫中间件、信号

    一 介绍 Scrapy一个开源和协作的框架,其最初是为了页面抓取 (更确切来说, 网络抓取 )所设计的,使用它可以以快速.简单.可扩展的方式从网站中提取所需的数据.但目前Scrapy的用途十分广泛,可 ...

  8. scrapy框架之Selectors选择器

    Selectors(选择器) 当您抓取网页时,您需要执行的最常见任务是从HTML源中提取数据.有几个库可以实现这一点: BeautifulSoup是Python程序员中非常流行的网络抓取库,它基于HT ...

  9. Scrapy 爬虫 使用指南 完全教程

    scrapy note command 全局命令: startproject :在 project_name 文件夹下创建一个名为 project_name 的Scrapy项目. scrapy sta ...

随机推荐

  1. Vue处理ajax请求

    Ajax请求 1>解决跨域问题 1.1前端解决.只需要在vue.config.js中增加devServer节点增加代理: const path = require("path" ...

  2. js函数节流和函数防抖

    概念解释 函数节流: 频繁触发,但只在特定的时间内才执行一次代码 函数防抖: 频繁触发,但只在特定的时间内没有触发执行条件才执行一次代码 函数节流 函数节流应用的实际场景,多数在监听页面元素滚动事件的 ...

  3. An Intuitive Explanation of Convolutional Neural Networks

    https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/ An Intuitive Explanation of Convolu ...

  4. 实验二 JSP基本动态元素的使用

    实验二  JSP基本动态元素的使用 实验性质:验证性          实验学时:  2学时      实验地点: 一 .实验目的与要求 1.掌握JSP中声明变量.定义方法.java程序片及表达式的使 ...

  5. python 面对对象基础

    目录 面向对象基础 面向对象编程(抽象) 类与对象 给对象定制独有的特征 对象的属性查找顺序 类与对象的绑定方法 类与数据类型 对象的高度整合 面向对象基础 面向对象编程(抽象) 回顾一下 面向过程编 ...

  6. matplotlib学习记录 六

    # 绘制多数据条形图 # 假设你知道了列表a中电影分别在2017-09-14(b_14),2017-09-15(b_15), # 2017-09-16(b_16)三天的票房,为了展示列表中电影本身的票 ...

  7. Python头脑风暴3

    驾校是个暴利行业 如果有高学历靠谱的IT人员做驾校教练等等等等.... Python虽然难做企业级应用,但Python是全球个人自定义应用的首选!!!没有之一,所有语言最快的开发速度,最个性化的私人定 ...

  8. ESP8266入门学习笔记1:资料获取

    乐鑫官网:https://www.espressif.com/zh-hans/products/hardware/esp8266ex/overview 乐鑫资料:https://www.espress ...

  9. python模块之sys

    sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxi ...

  10. JAVA基础篇—继承

    父类Vehicle package com.car; public class Vehicle { final String brand;// String color;// double speed ...