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

Python学习笔记-----Scrapy

2017-02-20 18:58 302 查看
Python

英文意思:大蟒蛇:

使用python可以做哪些用途?

1、 网站的开发,利用django,flask框架搭建网站。

2、 用爬虫实现数据挖掘、批量处理,例如:微博私信机器人,美剧批量下载,运行投资策略、刷便宜机票,爬合适房源、系统管理员脚本。

3、 再包装其他语言程序。

关于Python的库:

首先是python内置的标准库,然后在此基础上,如果想要相应的扩展,可以下载并且导入第三方库

爬虫部分:

首先,我们先看下什么是爬虫呢?

爬虫的英文翻译叫spider,即网络爬虫,可以理解为在互联网络上爬行的一只蜘蛛,当这只蜘蛛遇到资源的时候,它就会抓取下来,至于抓取什么内容,就由控制爬虫的代码来完成了。

一些爬虫的基本概念:

URL:就是一种资源定位符,简单来说就是我们通常说的网址。这边需要注意的就是,互联网上的每一个文件都有唯一的一个URL,它包含的信息就是指出文件的位置以及浏览器怎么处理它。

URL的组成:

1、协议,也叫服务方式

2、存有该资源的主机IP,或者端口号

3、主机资源的具体地址,比如目录

Scrapy 框架学习:

基本介绍:

Scrapy的基本组件

Spider:是一个类,它定义了怎么样爬取一个网站,包括怎么跟踪链接,怎样提取数据

Scrapy.spider的属性:

Name:spider的名称

Allowed_domains():爬虫站点

scrapy的基本概念

一、Request对象

1.初始化参数

class scrapy.http.Request(
url [ ,             #必须的
callback,           #回调函数
method='GET',       #请求方法
headers,
body,
cookies,
meta,               #元数据
encoding='utf-8',   #编码
priority=0,         #优先级
don't_filter=False, #是否过滤URl的flag
errback             #发生错误时所调用的函数
]
)


2.其他属性:

url

method

headers

body

meta

copy()

replace()


3、基本方法

生成request实例:

例子1:

def parse_page1(self, response):
return scrapy.Request("http://www.example.com/some_page.html",
callback=self.parse_page2)
def parse_page2(self, response):
# this would log http://www.example.com/some_page.html self.logger.info("Visited %s", response.url)


其中,parse_page1方法返回了一个URL,并且回调到parse_page1,记录了其日志信息

例子2:

def parse_page1(self, response):
item = MyItem()
item['main_url'] = response.url
request = scrapy.Request("http://www.example.com/some_page.html",
callback=self.parse_page2)
request.meta['item'] = item
return request

def parse_page2(self, response):
item = response.meta['item']
item['other_url'] = response.url
return item


在parse_page1方法中首先实例化了一个item,然后把response.url赋给了item中的‘main_url’字段,

然后生成一个request,回调到parse_page2【首先把response.meta[‘item’]赋值给item,然后把response.url赋值给item的‘other_url’字段】,接着把item赋给request.meta[‘item’],这样做的目的是是的parse_page2方法能够使用上一个函数传递过来的item的对象。这是两个不同函数之间传递数据的一种方法。

二、Response对象 是Scrapy对Requese请求之后的反馈对象

1、初始化参数:

class scrapy.http.Response(

url [ ,

status=200,

headers,

body,

flags

] )


2其他参数:

url

status

headers

body

request

meta

flags

copy()


3.子类:

class scrapy.http.TextResponse(url [ , encoding [ , ... ]] )

class scrapy.http.HtmlResponse(url [ , ... ] )

class scrapy.http.XmlResponse(url [ , ... ] )


关于Scrapy的内置服务

有四个模块,分别是:Logging模块,Stats Collections模块,Sending-email模块,Summary模块。下面,会对其进行相关的解释。

首先关于Logging模块:

基本使用模块:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python 数据挖掘