xpath使用
简介
  xpath使用路径表达式在xml和html中进行导航
 
语法
body    # 选取所有body元素的所有子节点

/html   # 选取根元素

body/a  # 选取所有属于body的子元素的a元素

//div   # 选取所有dic子元素(任意地方)

body//div   # 选取所有属于body元素的后代的div元素(body下任意位置)

//@class    # 选取所有名为class的属性

/body/div[1]    # 选取属于body子元素的第一个div元素

/body/div[last()]   # 选取属于body子元素的最后一个div元素

//div[@lang]    # 选取所有拥有lang属性的div元素

//div[@lang='eng']  # 选取所有lang属性为eng的div元素

/div/*  # 获取属于div元素的所有子节点

//* # 选取所有元素

//div[@*]   # 获取所有带属性的div元素

/div/a|//div/p  # 获取所有div的子元素a和p

//span|ul   # 选取文档中的span和ul元素

body/div/p|//span  # 选取所有body下的div下的p元素和所有span元素

//span[contains(@class, 'vote-post-up')]    # 寻找所有属性为class的值中包含vote-post-up的span标签
xpath对象
  response.xpath()返回的对象可以被无限调用,执行xpath方法继续搜索html内容
 
实例
def parse(self, response):
title = response.xpath('//div[@class="entry-header"]/h1/text()').extract_first("")
create_date = response.xpath("//p[@class='entry-meta-hide-on-mobile']/text()").extract()[0].strip().replace("·","").strip()
praise_nums = response.xpath("//span[contains(@class, 'vote-post-up')]/h10/text()").extract()[0]
fav_nums = response.xpath("//span[contains(@class, 'bookmark-btn')]/text()").extract()[0]
css选择器
简介
  根据标签元素间的层叠关系和元素本身属性获取我们想要的标签
 
语法
*   # 选择所有节点

#container  # 选择id为container的节点

.container  # 选取所有class包含container的节点

.container.hearder  # 选取所有class同时包含container和hearder的节点

li a    # 选取所有li下的所有a节点

ul + p  # 选择ul后面的第一个p元素

div#container > ul # 选取id为container的div的第一个ul子元素

ul ~ p # 选取与ul相邻的所有p元素

a[title]    # 选取所有title属性的a元素

a[href="http://www.baidu.com"]  # 选取所有href属性为http://www.baidu.com的a元素

a[href*="baidu"]    # 选取href属性包含baidu的a元素

a[href^="http"]     # 选取href属性以http开头的a元素

a[href$=".html"]     # 选取href属性以html结尾的a元素

input[type=radio]:checked   # 选取选中的radio的元素

div:not(#container) # 选取所有id非container的div属性

li:nth-child(3)     # 选取第三个li元素

tr:nth-child(2n)    # 选取偶数位tr元素
使用方式和xpath相似
def parse(self, response):
title = response.css(".entry-header h1::text").extract()[0]
create_date = response.css("p.entry-meta-hide-on-mobile::text").extract()[0].strip().replace("·","").strip()
praise_nums = response.css(".vote-post-up h10::text").extract()[0]
fav_nums = response.css(".bookmark-btn::text").extract()[0]
 
 

Scrapy学习-2-xpath&css使用的更多相关文章

  1. Scrapy:学习笔记(1)——XPath

    Scrapy:学习笔记(1)——XPath 1.快速开始 XPath是一种可以快速在HTML文档中选择并抽取元素.属性和文本的方法. 在Chrome,打开开发者工具,可以使用$x工具函数来使用XPat ...

  2. Scrapy学习笔记(5)-CrawlSpider+sqlalchemy实战

    基础知识 class scrapy.spiders.CrawlSpider 这是抓取一般网页最常用的类,除了从Spider继承过来的属性外,其提供了一个新的属性rules,它提供了一种简单的机制,能够 ...

  3. Scrapy:学习笔记(2)——Scrapy项目

    Scrapy:学习笔记(2)——Scrapy项目 1.创建项目 创建一个Scrapy项目,并将其命名为“demo” scrapy startproject demo cd demo 稍等片刻后,Scr ...

  4. scrapy学习(完全版)

    scrapy1.6中文文档 scrapy1.6中文文档 scrapy中文文档 Scrapy框架 下载页面 解析页面 并发 深度 安装 scrapy学习教程 如果安装了anconda,可以在anacon ...

  5. python爬虫之Scrapy学习

    在爬虫的路上,学习scrapy是一个必不可少的环节.也许有好多朋友此时此刻也正在接触并学习scrapy,那么很好,我们一起学习.开始接触scrapy的朋友可能会有些疑惑,毕竟是一个框架,上来不知从何学 ...

  6. 我们应当怎样学习HTML和CSS

    目标读者:web前端小白.大神请绕路 学习一门新技术,应当找一本经典入门书,在两三天之内快速翻阅完毕,了解其概貌. 然后再制定一个学习路线图(这个路线图绝大多数情况下非书本目录的顺序),接着遵循学习路 ...

  7. Gulp学习指南之CSS合并、压缩与MD5命名及路径替换(转载)

    本文转载自: Gulp学习指南之CSS合并.压缩与MD5命名及路径替换

  8. HTML+CSS学习笔记 (7) - CSS样式基本知识

    HTML+CSS学习笔记 (7) - CSS样式基本知识 内联式css样式,直接写在现有的HTML标签中 CSS样式可以写在哪些地方呢?从CSS 样式代码插入的形式来看基本可以分为以下3种:内联式.嵌 ...

  9. 9大理由告诉你为什么应该学习HTML跟CSS

    你是不是听过太多人告诉你:「人人都应该要会 coding!」都快要不耐烦了对吧? 究竟为什么身为一个行销专业者.作家.金融巨擘--,整个世界还要你学会 coding? 事实上仅仅要对 HTML.CSS ...

  10. Scrapy学习篇(十)之下载器中间件(Downloader Middleware)

    下载器中间件是介于Scrapy的request/response处理的钩子框架,是用于全局修改Scrapy request和response的一个轻量.底层的系统. 激活Downloader Midd ...

随机推荐

  1. python中的循环语句-01

    接触python已经一周时间,下面针对这一周python学习的情况做一梳理: 1)单行注释,使用一个#:多行注释,使用三个单引号(或者三个双引号)如: name = input("name: ...

  2. 如何 Scale Up/Down Deployment?【转】

    伸缩(Scale Up/Down)是指在线增加或减少 Pod 的副本数.Deployment nginx-deployment 初始是两个副本. k8s-node1 和 k8s-node2 上各跑了一 ...

  3. python hdfs初体验

    新建目录 chr 新建文件hdfstest1.txt并写入内容 复制hdfstest1.txt的内容到hdfstest2.txt

  4. 精选30道Java笔试题附答案分析

    精选30道Java笔试题解答 都是一些非常非常基础的题,是我最近参加各大IT公司笔试后靠记忆记下来的,经过整理献给与我一样参加各大IT校园招聘的同学们,纯考Java基础功底,老手们就不用进来了,免得笑 ...

  5. Linux文件系统概述二

    VFS-目录项对象(dentry) 每个文件除了有一个索引节点 inode 数据结构外,还有一个目录项 dentry 数据结构 dentry 结构代表的是逻辑意义上的文件,描述的是文件逻辑上的属性,目 ...

  6. MySQL 实时监控日志

    简单的梳理一下为什么要写这边文章,主要是学了ORM之后,发现通过ORM插入数据真的很方便,但是通过ORM生成的SQL语句又是怎么写的呢,百思不得姐.于是就找到了这个办法 首先查看一下查看MySQL 日 ...

  7. EF关于报错Self referencing loop detected with type的原因以及解决办法

    1)具体报错 { "Message": "出现错误.", "ExceptionMessage": "“ObjectContent` ...

  8. 【状态压缩 meet in middle】poj3139Balancing the Scale

    数组溢出真是可怕的事情 Description You are given a strange scale (see the figure below), and you are wondering ...

  9. (51)zabbix命令:zabbix_get获取item数据

    zabbix_get是什么?有什么作用? 总有人在群里提问,为什么zabbix获取不到数据,为什么zabbix提示Not Support,怎么办?别老问,用zabbix_get试着获取数据即可.在za ...

  10. redux form

    纯粹使用react进行表单校验: class MyForm extends React.Component{ constructor(props){ super(props) this.onAddrC ...