和xpath选择器比起来,感觉CSS选择器容易一些,跟写.css时方法基本一样,就是在获取内容时和xpath不同,这里需要注意一下.

这里介绍如何用css选择器提取出一篇文章的数据
提取的数据跟xpath那篇文章内容相同
之前xpath中我们获取元素是通过.entry-header h1::text,如果是属性则用.entry-header a::attr(href)
介绍一个常用的函数extract_first()
相当于extract()[0],但是extract()[0]当数组没有元素时,也就是没有获取到数据时会出错,所以用extract_first()方法,也可以加上需要返回的内容,比如空,extract_first("")

title = response.css(".entry-header h1::text").extract_first()
#p可以不加
create_date = response.css("p.entry-meta-hide-on-mobile::text").extract()[0].strip().replace('·','').strip()
#获取点赞数
praise_nums = response.css('#110287votetotal::text').extract()[0]
#获取收藏数
fav_nums = response.css('.btn-bluet-bigger.href-style.bookmark-btn .register-user-only::text ').extract()[0].strip()
match_re = re.match('.*?(\d+).*',fav_nums)
if match_re:#获取收藏数fav_nums = match_re.group(1)
comment_nums = response.css('.btn-bluet-bigger.href-style.hide-on-480::text').extract()[0].strip()
match_re = re.match('.*?(\d+).*',fav_nums)
if match_re:comment_nums = match_re.group(1)
tag_list = response.css('.entry-meta-hide-on-mobile a::text').extract()
content = response.css('div.entry').extract()[0]
tag_list = [element for element in tag_list if not element.strip().endswith('评论')]
tag = ','.join(tag_list)

当我们要选择的属性名字有多个时比如下面:


这市在选择时应该用

post_urls = response.css('#archive .post.floated-thumb .post-thumb a::attr(href)').extract()

也就是.post.floated-thumb应该连起来,或者只写.floated-thumb
##完整代码(准)

def parse_detail(self, response):title = response.css(".entry-header h1::text").extract_first()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]match_re = re.match(".*?(\d+).*", fav_nums)if match_re:fav_nums = int(match_re.group(1))else:fav_nums = 0comment_nums = response.css("a[href='#article-comment'] span::text").extract()[0]match_re = re.match(".*?(\d+).*", comment_nums)if match_re:comment_nums = int(match_re.group(1))else:comment_nums = 0content = response.css("div.entry").extract()[0]tag_list = response.css("p.entry-meta-hide-on-mobile a::text").extract()tag_list = [element for element in tag_list if not element.strip().endswith("评论")]tags = ",".join(tag_list)pass

Scrapy-css选择器相关推荐

  1. css 查看更多_在Scrapy中如何利用CSS选择器从网页中采集目标数据——详细教程(上篇)...

    /前言/ 今天小编给大家介绍Scrapy中另外一种选择器,即大家经常听说的CSS选择器. /CSS基础/ CSS选择器和Xpath选择器的功能是一致的,都是帮助我们去定位网页结构中的某一个具体的元素, ...

  2. Day81:爬虫Scrapy框架之css选择器使用

    css选择器介绍 在css中选择器是一种模式,用于选择需要添加样式的元素,css对html页面中的元素实现一对一,一对多或者多对一的控制,都需要用到css选择器,html页面中的元素就是通过css选择 ...

  3. 零基础学Python-爬虫-3、利用CSS选择器爬取整篇网络小说

    本套课程正式进入Python爬虫阶段,具体章节根据实际发布决定,可点击[python爬虫]分类专栏进行倒序观看: [重点提示:请勿爬取有害他人或国家利益的内容,此课程虽可爬取互联网任意内容,但无任何收 ...

  4. xpath选择器和css选择器的用法

    目标:xpath选择器和css选择器的用法 前文使用scrapy爬虫框架用到selector选择器了,本文补充两种选择器的使用细节 xpath选择器语法 css选择器语法 掌握常用的xpath选择器和 ...

  5. scrapy框架选择器

    scrapy框架选择器 Scrapy有自己的数据提取机制.它们被称为选择器,因为它们"选择"HTML文档的某些部分 XPath 或 CSS 表达. XPath是一种在XML文档中选 ...

  6. 使用css选择器容易犯的一个小错误

    使用css选择器容易犯的一个小错误 比如说,当我们使用scrapy框架的时候,想要利用find_element_by_css_selector()方法来找出网页中对应的部分,比如说下图所示的登陆框. ...

  7. Python中用Requests爬取名人名言网信息——基于BeautifulSoup和CSS选择器

    效果预览 代码实现 也可用Scrapy框架实现,通过此代码可比较BeautifulSoup中CSS选择器和Scrapy中内置CSS选择器和Xpath用法的差别.Scrapy实现代码链接:https:/ ...

  8. Python学习,还在用正则或者bs4做爬虫吗?来试试css选择器吧

    之前写的一些爬虫都是用的正则.bs4.xpath做为解析库来实现,如果你对web有所涉及,并且比较喜欢css选择器,那么就有一个更适合的解析库-- PyQuery.我们就用一个非常简单的小例子来看看c ...

  9. CSS 选择器:BeautifulSoup4解析器

    和 lxml 一样,Beautiful Soup 也是一个HTML/XML的解析器,主要的功能也是如何解析和提取 HTML/XML 数据. lxml 只会局部遍历,而Beautiful Soup 是基 ...

  10. 最常用的css选择器及兼容性 +几个好用却不多见的 nth-child等

    你也许已经掌握了id.class.后台选择器这些基本的css选择器.但这远远不是css的全部.下面向大家系统的解析css中30个最常用的选择器,包括我们最头痛的浏览器兼容性问题.掌握了它们,才能真正领 ...

最新文章

  1. leetcode 228. 汇总区间(Java版)
  2. linux cron计划任务
  3. PHP从零开始--错误处理函数
  4. codeforces1438 E.Yurii Can Do Everything
  5. React开发中常用的工具集锦
  6. 主窗体相关的知识点 winform
  7. Java虚拟机(八)——堆
  8. 图嵌入综述 (arxiv 1709.07604) 译文第一、二章
  9. 菜鸟学asp.net遇到的问题和解决方案
  10. ubutntu 使用tftp_TI 816X开发板直接从SD卡读取内核到内存中和通过TFTP下载到内存中区别...
  11. 云计算的高增长将持续推动光模块行业景气度
  12. 安装active directory
  13. python实现Longest Common Subsequence最长公共子序列算法
  14. vector::erase()的那些事儿
  15. umount卸载磁盘提示target is busy. (目标忙) 的问题解决方案
  16. java批量pdf压缩代码_怎么批量压缩PDF文档?迅捷PDF转换器帮你解决难题!
  17. 在Matlab中构建最大带权生成树
  18. C++ STL常用标准库容器入门(vector,map,set,string,list...)
  19. Python使用天气网api接口获取天气数据
  20. MacBook Pro 触控栏不能正常使用怎么解决

热门文章

  1. 第七天2017/04/14(引用与const、C++基本知识)
  2. svm 的提前处理
  3. Github 精选:13 款炼丹利器,有开源工具包也有超大数据集
  4. 谷歌OKR指导手册 (译)
  5. HTML 30分钟入门教程
  6. Redis事务(transaction)
  7. Spring - Java/J2EE Application Framework 应用框架 第 7 章 事务管理
  8. 深度学习Deep learning:四十一(Dropout简单理解)
  9. Python脚本图解
  10. 图像处理(三)图像分割(1)Random Walks分割