您的位置:首页 > 编程语言 > Python开发

python爬虫scrapy从零开始学习杂记(2)

2018-01-29 10:55 453 查看
继续上一篇的例子,已经初步爬取到了整个网页源码,现在要抓取我们所需要的数据。

使用选择器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)^ ——匹配字符串开头

注意:^出现在[ ]里面是代表否定之意,”[ ]”代表的是一个字符集,”^”只有在字符集中才是反向字符集的意思。

<这CSDN的编辑器不会用啊。。。。。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,写得很详细
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 爬虫