【爬虫计划】Scrapy框架的学习及跟课学习 | csdn_Part 03 Selector选择器

接着上篇存储到本地文件后,对于规则与爬取对象的选取这部分工作放到了Selector选择器部分,可以理解为对于目标的解析方法。

本节关键词:直接使用 | xpath | 正则匹配 | CSS

1.直接使用

对于这部分,使用一个小demo演示,在命令行处执行发现直接跳转到编译器pycharm,于是就用pycharm来运行了。代码在下自取:

# encoding:UTF-8
'''
为了检验Selector直接使用的用法
'''

from scrapy import Selector

content = '<html><head><h3>hello world</h3><meta http-equiv="Content-Type" content="text/html;charset=utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta content="always" name="referrer"><meta name="theme-color" content="#2932e1"><link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" /><link rel="search" type="application/opensearchdescription+xml" href="/content-search.xml" title="百度搜索" /><link rel="icon" sizes="any" mask href="//www.baidu.com/img/baidu_85beaf5496f291521eb75ba38eacbd87.svg"><link rel="dns-prefetch" href="//dss0.bdstatic.com"/><link rel="dns-prefetch" href="//dss1.bdstatic.com"/><link rel="dns-prefetch" href="//ss1.bdstatic.com"/><link rel="dns-prefetch" href="//sp0.baidu.com"/><link rel="dns-prefetch" href="//sp1.baidu.com"/><link rel="dns-prefetch" href="//sp2.baidu.com"/><title>百度一下,你就知道</title>'

selector = Selector(text=content)
print(selector.xpath('/html/heal/title/text()').extract_first())
print(selector.css("h3::text").extract_first())
print("text")

在演示过程中,使用的是【文件名加后缀名】 后直接回车的方式直接运行,经测试并没有输出结果,直接打开了编译器,所以转向编译器:

 其text部分的输出测试是为了排除匹配不成功,没有获取到结果所以没有输出的结果,考虑直接执行,编译的仍然是python文件,猜想是因为没有设置默认编译py文件,这里贴出在pycharm中运行成功的截图,继续往后走:

 进入shell中发现,使用命令后出现上一个文件执行结果,并且对baidu网页进行采集:

scrapy shell https:www.baidu.com

采集结束后进入shell模式,可以使用两条命令查看采集网页状态码及url:

response.status

response.url

 针对百度网页的selector用法分别获取到html-head-title下的文本信息,其中extract( )、extract_first( )两个函数分别取出其中文本信息和列表中首条信息(下个部分对于xpath方法这部分有具体讲解),因此获取结果不同:

继续对网页进行提取操作,例如对所有a标签的提取文本和超链接: 

2.XPath选择器

讲完直接选择器,开始对xpath方法进行讲解,其中xpath方法和另三种extract*类方法的功能如下:

讲完理论照例,使用一个例子来说明xpath的具体用法,这次下手的是taobao网页(参照上面shell+网址命令,将网址换成 https://www.taobao.com/tbhome/page/special-markets),继续采集工作,输入后我的采集进程较慢,不知是不是网速影响,稍等一会就能出来:

可以看到对于采集对象的解析和存入dict再输出,这里shell下可以多行代码 ,

...:状态下输入完代码多敲一次回车,quit()是退出命令,其中下方代码中 end=“;” 语句是避免换行,以分号结束单条结果

完成标题的提取后,对于进一步的采集,侧重看源码规则,针对规则写出xpath函数中引号包含的特征式,以获取到匹配的结果:

采集成功,这部分练习结束 。

3.CSS选择器

用样例说明它的使用,还是拿taobao测试。对象URL是:https://www.taobao.com/tbhome/page/market-list

【练习目标】将taobao市场上的分类都取下来:

因为分类有点复杂,先给目标一个截图再往后走:

照例将上方URL接上 scrapy shell 命令后回车,在采集完成后的shell中输入命令,常规操作,先看状态,200往后走:

对a标签的“category-*-*”属性的文本(双冒号加text,千万记得后面不用跟括号,方法才需括号),结果果然对应列表,这是一级输出,往后走:

尝试到标题以后,对二级分类继续进行筛选,这部分一样的代码我爬到的结果跟老师不太一样,所以按照理解稍微改动一下代码,再次尝试:

经过修改 可以看出确实是把分类对象全爬取下来了。上下两种是我使用了两种不同的分隔符,可以看出来去掉了最后一行的换行输出后,就在一行了:

4.正则匹配

这部分需要注意的是,不能直接用,需要先用xpath()或者selecto进行引导,注意括号的使用:

依旧是上个小案例,对于baidu网页title标签内的提取, 还有[0]和re_first()两种方法取出值:

这部分的练习就到这里。

今天~的那句话:刻意练习,每日精进!

 

 

 

 


http://www.niftyadmin.cn/n/1131408.html

相关文章

iOS 工程开发中的 Code Review

Code Review 是软件工程中的一个重要环节&#xff0c;它不但可以提高代码质量&#xff0c;提前发现bug&#xff0c;还可以统一团队的代码规范&#xff0c;有益于形成团队技术氛围&#xff0c;加深技术团队成员沟通&#xff0c;以老带新互助成长等等。为提升效率&#xff0c;我们…

MyEclipse6.5安装SVN插件的三种方法

MyEclipse6.5安装SVN插件的三种方法 方法一、如果可以上网可在线安装 1. 打开Myeclipse&#xff0c;在菜单栏中选择Help→Software Updates→Find and Install; 2. 选择Search for new features to install&#xff0c;点击Next进入下一步; 3. 点击"New Remote Site"…

【爬虫计划】Scrapy框架的学习及跟课学习 | csdn_Part 04 Spider的使用

昨日开了三篇&#xff0c;一篇爬虫&#xff0c;一篇复习计划&#xff0c;一篇数据分析笔记&#xff0c;三篇都没完成&#xff0c;这篇也是拖到今天&#xff0c;不是因为昨天一天没干活&#xff0c;而是在本地听了scrapy传zhi播客的导入视频&#xff0c;讲解的较为细致&#xff…

让博客成为一种习惯

2019独角兽企业重金招聘Python工程师标准>>> 最近一直变得比较懒。“写程序、写文档、写方案”&#xff0c;所以一直没有更新博客&#xff0c;理由非常充分&#xff01; 我也经常劝朋友说&#xff1a;多写写吧&#xff0c;可以练练手呢&#xff01;搞笑的是&#xf…

大型微服务架构稳定性建设策略

对于大型应用后台系统来说&#xff0c;稳定性至关重要。目前越来越多的大型应用系统采用微服务架构&#xff0c;更加需要关注稳定性的技术能力建设。稳定性是服务系统基础能力的体现。针对我们业务后台系统建设&#xff0c;任何大型业务后台系统绝对不是一蹴而就。它是伴随着业…

【爬虫计划】Scrapy框架的学习及跟课学习 | csdn_Part 05 ItemPipeline的使用

听完几首歌&#xff0c;开始今天的爬虫课程&#xff0c;这部分主要是对管道使用的介绍&#xff0c;本部分讲完&#xff0c;后面再一个综合案例就结束了&#xff0c;最好今天能够把这部分搞熟&#xff0c;包括案例的理解&#xff0c;可以结合前五篇一起回顾scrapy的特性和那张部…

Windows.Server.2008.R2.Active.Directory.配置指南(三)

五种操作主机概述 架构操作主机&#xff08;Schema Operations Master&#xff09;&#xff1a;扮演架构操作主机角色的域控制器&#xff0c;复制更新与修改架构&#xff08;Schema&#xff09;内的对象种类与属性数据&#xff0c;隶属于Schema Admins组内的用户才有权限修改架…

【JSP开发】用ServletContext读取资源文件

两种读取资源文件的方法。 db.properties文件中放了三个参数&#xff0c;分别是url、username和password信息。 测试代码&#xff1a; package cn.edu;import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; …