继续上一篇的例子,已经初步爬取到了整个网页源码,现在要抓取我们所需要的数据。
使用选择器selectors:
首先,在命令行界面打开shell:scrapy shell "http://quotes.toscrape.com/page/1/",回车
#Selector有四个基本的方法:
1.xpath():传入xpath表达式,返回该表达式对应的所有节点的selector list列表
2.css():传入css表达式,返回该表达式对应的所有节点的selector list列表
3.extract():序列化该节点为unicode字符串并返回list
4.re():根据所传入的正则表达式对数据进行提取,返回Unicode字符串list列表
1.xpath的使用
response.xpath('xpath表达式')
#####几个表达式######
/:从根节点选取
//:从匹配的当前节点选择文档中的节点,而不考虑它们的位置
.:选择当前节点
..:选择当前节点的父节点
@:选取属性
几个简单例子:
response.xpath('/html/head/title') --选择HTML文档head元素下的title标签
response.xpath('/html/head/title/text()')--选择title元素下的文本内容
response.xpath('//title')--选择所有title元素
response.xpath('//div[@class="name"')--选择所有包含class="name"的div标签元素
response.xpath('//a[contains(@href,"image")]/@href')--选择属性名称包含image的所有超链接,通过contains实现
2.css的使用
response.css('css表达式')
#####几个简单例子#####
response.css('title::text')--选择title元素下的文本内容
3.extract的使用
respnse.xpath('//ul/li/a/@href').extract()--提取<ul>标签下<li>标签下<a>标签内的链接
4.re的使用及正则表达式
正则表达式:1). ——匹配任意除换行符以外的字符;
2)\d ——匹配数字0-9
3)\D ——匹配非数字
4)\s ——匹配空白字符即空格
5)\S ——匹配非空格
6)\w ——匹配单词字符
7)\W ——匹配非单词字符
8)* ——匹配前一个字符0或无限次
9)+ ——匹配前一个字符1或无限次
10)? ——匹配前一个字符0或1次
11)^ ——匹配字符串开头
12)$ ——匹配字符串末尾
13)()——被括号括起来的表达式作为分组,编号从1开始
14)(?P<name>...)——把...的内容作为分组,除了原有编号外再指定一个别名name
15)\<number> ——引用标号为<number>的分组匹配到的字符串
16)(?P=name)——引用别名为<name>的分组匹配到的字符串
17){m} ——匹配前一个字符m次
18){m,n} ——匹配前一个字符m至n次,省略m,则匹配0-n次;省略n,则匹配m至无限次 19)[] ——匹配括号内的所有字符 20)^ ——匹配字符串开头
注意:^出现在[ ]里面是代表否定之意,”[ ]”代表的是一个字符集,”^”只有在字符集中才是反向字符集的意思。<这优快云的编辑器不会用啊。。。。。orz。。。>
在上一个例子中,修改代码:
def parse(self, response):
for quote in response.css('div.quote'):
yield {
'text': quote.css('span.text::text').extract_first(),
'author': quote.css('small.author::text').extract_first(),
'tags': quote.css('div.tags a.tag::text').extract(),
}
运行得到结果2018-01-29 09:21:55 [scrapy.core.scraper] DEBUG: Scraped from <200 http://quotes.toscrape.com/page/1/>
{'text': u'\u201cIt is our choices, Harry, that show what we truly are, far more than our abilities.\u201d',
'tags': [u'abilities', u'choices'], 'author': u'J.K. Rowling'}
具体深入的使用参考:http://www.bubuko.com/infodetail-2172861.html,写得很详细
本文介绍如何使用Scrapy爬虫框架中的Selector来提取网页数据,包括XPath与CSS选择器的使用方法,并给出实例。

被折叠的 条评论
为什么被折叠?



