python学习笔记三(scrapy)
来源:互联网 发布:java线程与进程的 编辑:程序博客网 时间:2024/06/11 01:09
1.from Scrapy.item import Item,Field
其中Item是保存结构数据的地方,Scrapy可以将解析结果以字典形式返回,Item提供了类字典的API,并且可以很方便的声明字段,很多Scrapy组件可以利用Item的其他信息。
定义Item非常简单,只需要继承scrapy.Item类,并将所有字段都定义为scrapy.Field类型即可
2.from scrapy.loader import ItemLoader
Item Loader为我们提供了生成Item的相当便利的方法。Item为抓取的数据提供了容器,而Item Loader可以让我们非常方便的将输入填充到容器中。
3.from scrapy.selectors import selector
Scrapy 提取数据有自己的一套机制。它们被称作选择器(seletors),因为他们通过特定的 XPath 或者 CSS 表达式来“选择” HTML 文件中的某个部分。
Scrapy selector 是以 文字(Text)或 TextResponse 构造的 Selector。其根据输入类型自动选择最优的分析方法(XML vs HTML):
以文字构造:
>>> body = '<html><body><span>good</span></body></html>'
>>> Selector(text=body).xpath('//span/text()').extract()
[u'good']
以 response 构造:
>>> response = HtmlResponse(url='http://example.com', body=body)
>>> Selector(response=response).xpath('//span/text()').extract()
[u'good']
response 对象以 .selector 属性提供了一个 selector:
>>> response.selector.xpath('//span/text()').extract()
[u'good']
举例:
<html>
<head>
<base href='http://example.com/' />
<title>Example website</title>
</head>
<body>
<div id='images'>
<a href='image1.html'>Name: My image 1 <br /><img src='image1_thumb.jpg' /></a>
<a href='image2.html'>Name: My image 2 <br /><img src='image2_thumb.jpg' /></a>
<a href='image3.html'>Name: My image 3 <br /><img src='image3_thumb.jpg' /></a>
<a href='image4.html'>Name: My image 4 <br /><img src='image4_thumb.jpg' /></a>
<a href='image5.html'>Name: My image 5 <br /><img src='image5_thumb.jpg' /></a>
</div>
</body>
</html>
首先打开shell
scrapy shell http://doc.scrapy.org/en/latest/_static/selectors-sample1.html
当 shell 载入后,将获得名为 response 的 shell 变量,其为响应的 response,并且在其 response.selector 属性上绑定了一个 selector。
因为处理的是 HTML,选择器自动使用 HTML 语法分析。
那么,通过查看 HTML code 该页面的源码,可以构建一个 XPath 来选择 title 标签内的文字:
>>> response.selector.xpath('//title/text()')
[<Selector (text) xpath=//title/text()>]
由于在 response 中使用 XPath、CSS 查询十分普遍,因此,Scrapy 提供了两个实用的快捷方式:
response.xpath()
response.css()
>>> response.xpath('//title/text()')
[<Selector (text) xpath=//title/text()>]
>>> response.css('title::text')
[<Selector (text) xpath=//title/text()>]
.xpath() 以及 .css() 方法返回一个类 SelectList 的实例,它是一个新选择器的列表。这个 API 可以用来快速的提取嵌套数据。
为了提取真实的原文数据,需要调用 .extract() 方法如下:
>>> response.xpath('//title/text()').extract()
[u'Example website']
CSS 选择器可以使用 CSS3 伪元素(pseudo-elements)来选择文字或者属性节点:
>>> response.css('title::text').extract()
[u'Example website']
获取得到根 URL(base URL)和一些图片链接:
>>> response.xpath('//base/@href').extract()
[u'http://example.com/']
>>> response.css('base::attr(href)').extract()
[u'http://example.com/']
>>> response.xpath('//a[contains(@href, "image")]/@href').extract()
[u'image1.html',
u'image2.html',
u'image3.html',
u'image4.html',
u'image5.html']
>>> response.css('a[href*=image]::attr(href)').extract()
[u'image1.html',
u'image2.html',
u'image3.html',
u'image4.html',
u'image5.html']
>>> response.xpath('//a[contains(@href, "image")]/img/@src').extract()
[u'image1_thumb.jpg',
u'image2_thumb.jpg',
u'image3_thumb.jpg',
u'image4_thumb.jpg',
u'image5_thumb.jpg']
>>> response.css('a[href*=image] img::attr(src)').extract()
[u'image1_thumb.jpg',
u'image2_thumb.jpg',
u'image3_thumb.jpg',
u'image4_thumb.jpg',
u'image5_thumb.jpg']
- python学习笔记三(scrapy)
- Scrapy学习笔记(三)
- Python学习笔记-----Scrapy
- Python scrapy基础教程(三)
- scrapy文档学习笔记(scrapy tutorial)
- Scrapy学习笔记(1)初探Scrapy
- Scrapy学习笔记(0)---Scrapy一瞥
- python爬虫框架scrapy学习笔记
- python爬虫框架scrapy学习笔记
- 学习笔记python入门-安装Scrapy
- python学习(3)scrapy
- python学习笔记(三)
- Python学习笔记(三)
- python学习笔记(三)
- python学习笔记:(三)
- Python学习笔记(三)
- python学习笔记(三)
- Python学习笔记(三)
- centOS 7 设置固定IP,无法上外网
- List.toArray的使用
- 排列组合
- 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()《转载》
- C++调用外部应用程序的方法的整理总结
- python学习笔记三(scrapy)
- Linux查找进程并kill
- git建立追踪关系的小技巧
- webclient上传数据到ashx服务
- 关于基于http的嵌入式linux与服务器的get,post解析理解
- tomcat server.xml中文版
- Linux使用jstat命令查看jvm的GC情况
- 块作用域来申明function防止污染全局变量
- iOS AVSpeechSynthesizer进行文字转语音