Ubuntu 1陆.0四安装Memcached(单机)

卸载(卸载前先kill全部进程:killall memcached):


2使用chkconfig追加开机运维服务。

肆. 数码存储

能够利用twisted提供的数据库库来保障三个连接池:

class CnblogPipeline(object):
    def __init__(self):
        self.dbpool = adbapi.ConnectionPool('MySQLdb',
                                            host='localhost',
                                            db='cnblog',
                                            user='root',
                                            passwd='root',
                                            cursorclass=MySQLdb.cursors.DictCursor,
                                            charset='utf8',
                                            use_unicode=True)

    def process_item(self, item, spider):
        self.dbpool.runInteraction(self.cnblog_insert, item)
        return item

    def cnblog_insert(self, cur, item):
        try:
            cur.execute('insert into ***')
        exception MySQLdb.Error, e:
            logging.info("cnblog_insert:%s" % str(e))

假诺爬的是交际网址这种颇具树型结构涉及的网址的话,mongodb其符合人的思想的蕴藏方式让其成为首要选拔。

比方使用mysql的话记得将innodb_flush_log_at_trx_commit这么些参数置为0(每1秒读写叁次数据和log),能够大大进步读写速度。


下载最新版:http://libevent.org/

6. scrapy_redis简介

scrapy_redis是八个分布式爬虫的解决方案。其思想为多个爬虫共用二个爬取队列,此行列使用redis存款和储蓄,因为redis是三个内部存款和储蓄器数据库,所以速度上与单机的队列相差非常的小。

那么,scrapy_redis到底对scrapy做了怎么样修改,达到分布式的指标吧?

翻看github上面包车型大巴源码,能够窥见其成效性代码集中在scheduler.py,dupefilter.py和queue.py中,分别是调度器(部分效果),去重,以及redis队列的兑现。scrapy_redis正是将那个功用代替了scrapy原本的法力(并不曾改动scrapy源码,只需求在settings.py中展开设置即可),从而达到了分布式的功用。


源代码安装的:

2. 模仿登录

于今亟待登录才能健康浏览的网址的更是多了,对爬虫也愈发不友好…所以模拟登录在很多场面都以必不可缺的。

首先,最简便的效仿登录是唯有用户名密码的登录。那时候只要求在出殡和埋葬第一个请求时累加登录表单数据即可:

def start_requests(self):
    return scrapy.FormRequest(
            formdata={'username': '***', 'password': '***'},
            callback=self.after_login
        )

若是不精通登录页面是哪二个来说,也得以在回到第二个请求后登录:

def parse(self, response):
    return scrapy.FormRequest.from_response(
            response,
            formdata={'username': '***', 'password': '***'},
            callback=self.after_login
        )

为了有限帮衬登录,注意cookie是不可能关闭的(私下认可情状是开着的,能够在settings.py中安装)。

假若须要验证码的话,网上有部分提取分析验证码图片的包,能够领到出来然后手动输入验证码。

上边只是壹对归纳的登录状态,如若验证码很变态(比如供给鼠标滑动)恐怕登录进程很复杂,需求种种加密(比如乐乎博客园pc端的登6)的话,模拟登录确实是个很令人头大的难点。那时候有另贰个通用办法,那正是cookie模拟登录。网址想驾驭大家的记名意况,都以透过cookie来确认的,所以大家只须要在历次request的时候都附带上cookie即可实现已报到的功能。

那么,怎么着获取cookie呢?有chrome的能够F12打开Network界面,那时候人工网页登录,即可在headers中观察cookie。得到cookie后,只需求在request中投入本身的cookie即可。

self.cookie = {"_T_WM": self.cookie_T_WM,
                ...
                "SSOLoginState": self.cookie_SSOLoginState}

return Request(url, cookies=self.cookie, callback=self.parse_page)

有三种艺术:

三. 网页解析

诚如的话,使用xpath和css已经能够应付全部的html源码了,剩下的只是耐心加细心…即便有心的话也足以Item
Loaders,方便前期的爱护,上边摘自官方文书档案:

def parse(self, response):
    l = ItemLoader(item=Product(), response=response)
    l.add_xpath('name', '//div[@class="product_name"]')
    l.add_xpath('name', '//div[@class="product_title"]')
    l.add_xpath('price', '//p[@id="price"]')
    l.add_css('stock', 'p#stock]')
    l.add_value('last_updated', 'today')
    return l.load_item()

值得1提的是倘若获得的是json格式的数额,能够动用python自带的json库来分析成二个字典或列表:

data = json.loads(response.body)

#命令帮助
/usr/local/memcached/bin/memcached -h                           

参考资料

scrapy官粤语档

转发请表明出处:http://www.cnblogs.com/rubinorth/

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

#log
exec 2> /tmp/rc.local.log  # send stderr from rc.local to a log file  
exec 1>&2                  # send stdout to the same log file  
set -x                     # tell sh to display commands before execution 

#Memcached
/usr/local/memcache/bin/memcached -p 11211 -m 64m -d -u root

exit 0

本篇将谈1些scrapy的进阶内容,援助大家能更熟谙那么些框架。

一在rc.local中装置运转(地点在/etc/rc.d/rc.local)。

1. 站点接纳

当今的大网址基本除了pc端都会有移动端,所以必要先明确爬哪个。

例如爬腾讯网新浪,有以下多少个挑选:

  1. www.weibo.com,主站
  2. www.weibo.cn,简化版
  3. m.weibo.cn,移动版

位置四在这之中,主站的和讯数据是动态加载的,意味着光看源码是看不到数据的,想爬的话要么搞清楚其api访问景况,要么模拟js,那样的话花的劲头也许就有点多了。weibo.cn是3个简化版,数据能一贯从网页源代码中分析出来,但选拔正则或xpath取网页中的元素依旧是低级庸俗且费时的,更毫不说有时候的页面结构错误更令人抓狂。
相比之下,移动版的爬虫最棒写,因为智行版能直接得到json格式的多少。

一般的话,有活动版的网址优先爬移动版,会省去成千成万马力。


在意:假使使用电动安装Memcached命令位于/usr/local/bin/memcached

5. scrapy小知识点

  • Request传递音讯。在Request中加入meta,即可将meta传递给response。

Request(url, meta={'how': 'ok'}, callback=self.parse_page)

def parse_page(self, response):
    print response.meta['how']
  • CrawlSpider。都驾驭在写自身的spider的时候需求继续scrapy的spider,除了scrapy.Spider外,scrapy还提供了几许种spider,在那之中CrawlSpider算是相比常用的。CrawlSpider的优势在于可以用rules方便地分明新的url的指南,即由此正则相称来约束url。并且不要求本身生成新的url,CrawlSpider会自个儿搜索源码中兼有符合须要的新url的。其它,rules的回调方法名字最棒不用叫parse。

class CnblogSpider(CrawlSpider):
    name = "cnblog_spider" 
    allowed_domain = ["cnblog.com"]

    start_urls = ["http://www.cnblogs.com/rubinorth"]

    rules = [
        Rule(LinkExtractor(allow=r"http://www.cnblogs.com/rubinorth/p/\d+\.html"),
                            callback="parse_page", follow=True)
    ]
  • parse中既重回item又变卦新的request。日常在parse中return
    item即可回到item,return
    request则生成新的request请求。如若我们将return换为yield的话即可既再次回到item又变化新的request。注意一旦选择了yield,那么parse方法中就不可能有return了。

def parse_page(self, response):
    item = CnblogItem()
    ****
    yield item
    yield Request(new_url, callback=self.parse_page)
  • 种种spider区别设置。在spider中加入custom_settings即可覆盖settings.py中相应的安装,那样的话在settings.py中只必要放壹些公用的装置就行了。最常用的正是设置各样spider的pipeline。

custom_settings={
    'ITEM_PIPELINES' : {
        'cnblog_project.pipelines.CnblogPipeline': 300,
    }
}
  • 读取自身的设置。甭管在spider中仍然pipeline中,都得以写from_crawler那么些艺术(注意spider中参数数目区别)。此情势在发轫化阶段由scrapy自身调用,其最大的效率正是从settings.py读取自个儿的装置了。上边包车型客车代码从settings.py中读取了MONGO_URI。

class MongoPipeline(object):

    def __init__(self, mongo_uri, mongo_db):
        self.mongo_uri = mongo_uri

    @classmethod
    def from_crawler(cls, crawler):
        return cls(
            mongo_uri=crawler.settings.get('MONGO_URI')
        )
  • 顺序。settings.py中middleware和pipeline设置的时候要求在背后跟上二个数字,而那一个数字的含义正是调用的逐条,数字越小越早调用。

DOWNLOADER_MIDDLEWARES = {
    'cnblog_project.my_mv.middleware.UserAgentMiddleware': 543,
    'cnblog_project.my_mv.middleware.ProxyMiddleware':544,
}
  • pipeline中spider.name的应用。pipeline中的process_item中能够依照spider.name来对两样的item进行差异的拍卖。

def process_item(self, item, spider):
    if spider.name == 'a':
        ****
    if spider.name == 'b':
        ****
  • 五个pipeline处理1个item。pipeline中的process_item方法必须回到2个item或然raise1个DropItem的不胜,假如回去item的话这几个item将会被随后的pipeline接收到。

def process_item(self, item, spider):
    return item
  • 从此大概会有抬高。

其实这么些在scrapy的官方文书档案都有聊到,在此只是总计1些常用的知识点。若想越来越尖锐地问询scrapy,定然是读书其法定文书档案最佳了。:)


测试

活动安装:

这么会显得调节和测试音信。命令在前台运行了Memcached,监听TCP端口1121壹,最大内部存款和储蓄器使用量为6四M。调节和测试音信的始末半数以上是有关存储的音信。

Ubuntu:

telnet 192.168.0.200 11211
sudo rm  -rf /usr/local/memcached

证实:在Linux下提议使用源码的花样设置,至少整个安装的文书是清晰的,包罗新建了何等文件等。在CentOS下要专注管理员权限运转。

叁在scripts文件夹下有个memcaed.sysv的文本(注意:那一个文件不适合Ubuntu),拷贝到/etc/init.d下,然后利用chkconfig举行劳动的增进即可。

/usr/local/memcached/bin/memcached -d -m 64M -u root -l 192.168.0.200 -p 11211 -c 256 -P /tmp/memcached.pid

详细运行选项:

有备无患条件:

#下载最新版本
wget http://memcached.org/latest                    
#重命名
mv latest memcached.tar.gz
#解压源码
tar -zxvf memcached.tar.gz                    
#进入目录
cd memcached-1.5.1/       
#切换root权限
sudo su                           
#配置
./configure --prefix=/usr/local/memcached/  
#编译      
make && make test                                   
#安装
make install                                   
#(Ubuntu)
sudo apt remove memcached
#(CentOS)
yum remove memcached

Memcached命令的运作:

下边是通过rc.local运转的剧本:

2、作为后台服务程序运营:

/usr/local/memcached/bin/memcached -p 11211 -m 64m -d
tar -zxvf libevent-2.1.8-stable.tar.gz 
cd libevent-2.1.8-stable/
sudo su
./configure  
make && make install
#(Ubuntu/Debian)
sudo apt-get install memcached
#(Redhat/Fedora/Centos)
yum install memcached
#(FreeBSD)
portmaster databases/memcached

http://blog.csdn.net/ydwei918/article/details/46455471(CentOS卸载Memcached)

 

1、作为前台程序运维:

Ubuntu
1陆.04设置Memcached,然而不仅仅限与Ubuntu,能够用CentOS等去安装,只不过测试时采纳的是Ubuntu机器。Windows下不提议采取,本机调节和测试能够采取,线上环境除了Windows之外都足以选拔。

  • “A”:是还是不是运营客户端应用shutdown命令。暗许是不容许的。该选项将同意。客户端的shutdown命令会将Memcached进度杀死。该选项会将settings.shutdown_command赋值为false
  • “a”:unix
    socket的权能位音信(访问掩码)。该采纳的参数赋值给settings.access
  • “U”:大写U。Memcached监听的UDP端口值,暗中认可端口为11211。该选取的参数赋值给settings.udpport
  • “p”:小写p,Memcached监听的tcp端口。私下认可端口为1121一,
    该选拔的参数赋值给settings.port
  • “s”:小写S。unix
    socket监听的socket路径。该选取的参数赋值给settings.socketpath
  • “m”:小写m。Memcached能够采用的最大内部存款和储蓄器值,暗许是6肆MB。参数单位为MB。该参数赋值给settings.maxbytes
  • “M”:大写M。暗许情状下,当Memcached的内部存款和储蓄器使用完后,将展开LRU机制淘汰item以腾出空间。要是应用本选项那么将闭馆LRU成效。当然关闭LRU不意味不能积存新数据。要是Memcached里面存有逾期失效的item,那么就可以储存新数据。不然将不能储存。该选项将settings.evict_to_free赋值为0。
  • “c”:小写c。最多允许多少个客户端同时在线(这几个值不等价于listen函数的第叁个参数),该选拔和前面包车型大巴b选项有所差别。
    默许值为102十六个。该选项参数赋值给settings.maxconns。
  • “h”:展现辅助新闻
  • “i”:呈现memcached和libevent的版权消息
  • “k”:小写k。将Memcached使用到的内部存款和储蓄器锁定在内部存储器中,不准OS把Memcached的内部存款和储蓄器移动到虚拟内部存储器。因为当OS把Memcached的内部存款和储蓄器移动到虚拟内存只怕会促成页错误,降低Memcached的响应时间
  • “v”:小写v。输出Memcached运维时的1对音信。-v -vv
    -vvv输出的新闻依次扩张。该选项会增多settings.verbose的值
  • “l”:Memcached绑定的ip地址。假设不设置这些选项,那么Memcached将应用INADD牧马人_ANY。假使想钦点八个IP地址,那么该选用的参数可以由四个ip组成,ip之间用逗号分隔。也足以频仍使用那么些选项,此时端口应该尾随ip而不是单独用-p选项钦点。例如-l
    1二七.0.0.壹:8888,1玖二.168.一.11二:999九 要么 -l 1贰七.0.0.一:8888 -l
    1九二.16八.①.112:999九该选用参数将赋值给settings.inter
  • “d”:以守护进度的款型运营Memcached
  • “r”:将core文件大小设置为不受限制
  • “R”:worker线程再三再四为某些客户端执行命令的最大命令数。该采用的参数赋值给settings.reqs_per_event
  • “u”:小写u。当以root用户运营Memcached的时候须求钦定Memcached的所属用户,其余用户运行Memcached不供给此选项
  • “P”:大写p。该采取的参数指明Memcached的pid保存文件。要和-d选项合作使用。注意运维的用户是或不是有权力写对应的文件
  • “f”:item的扩大体积因子。暗中认可值为一.2五。该选拔的参数值能够是小数但必须抢先一.0。该选项参数将赋值给settings.factor
  • “n”:设置最小的item能储存多少字节的数据。该选项参数赋值给settings.chunk_size
  • “t”:该选用的参数用于钦定worker线程的个数,不提出超越陆11个。假如不安装该选项暗中认可有伍个线程。该参数会赋值给settings.num_threads
  • “D”:参数字符作为前缀和ID的分隔符。使用了该选项才会自行采集意况音讯。也可以在开发银行Memcached后,客户端应用stats
    detail
    on命令开启,此时暗中认可的相间符为冒号”:”。该选项参数会赋值为settings.prefix_delimiter,并将settings.detail_enabled赋值为1
  • “L”:倘若OS允许的话,那么向OS申请更加大的内部存款和储蓄器页。OS的暗中认可内部存款和储蓄器页为4KB。大的内部存款和储蓄器页能够使得降低页表的轻重,进步成效。此选项会使得Memcached预先先OS全部所需的提请内部存款和储蓄器。当然这个内部存款和储蓄器尽量是用大内部存款和储蓄器页分配的
  • “C”:大写C。Memcached私下认可是使用CAS的,本选项是禁止使用CAS。本选项会将settings.use_cas赋值为false
  • “b”:listen函数的第3个参数。该采取的参数赋值给settings.backlog。即使不安装该选拔,那么暗中认可为10二4。该选项和前边的c选项有所分化
  • “B”:Memcached扶助文件协议和2进制协议。该选拔的参数用于钦命使用的磋商。暗中认可景况下是基于客户端的一声令下而活动判断(也叫协商),参数只好取auto、binary、ascii这三个字符串值。将参数将赋值给settings.binding_protocol
  • “I”:slab分配器中,每贰个页的轻重缓急。那个选项的参数是二个数值表示页的分寸。暗中同意单位是B也能够在数值前面带K也许M(大小写都行),表示KB和MB。页的大小小于一KB或许高于12捌MB都以不允许的。不引入应用该选项。本选项参数会赋值给settings.item_size_max
  • “S”:大写S。打开sasl安全磋商。会将settings.sasl赋值为true
  • “F”:取缔客户端的flush_all命令。默许是允许客户端的flush_all命令的。该选项将settings.flush_enabled赋值为false
  • “o”:有上边多少个子选项能够设置。那么些选项是用来优化的
    • maxconns_fast:  
      假诺连接数超过了最大而且在线数(由-c选项钦赐),立即关闭新连接上的客户端。该选项将settings.maxconns_fast赋值为true
    • hashpower:  
      哈希表的长短是贰^n。能够由此增选hashpower设置指数n的早先值。如若不安装将取暗中认可值16。该选项必须有参数,参数取值范围只好为[12,
      64]。本选项参数值赋值给settings.hashpower_init
    • slab_reassign:  
      该选取未有参数。用于调节不相同类型的item所占的内部存款和储蓄器。分化门类是指大小不壹。某一类item已经很少使用了,但仍占据着内部存款和储蓄器。能够由此开启slab_reassign调度内部存款和储蓄器,收缩那一类item的内部存储器。要是应用了本选项,settings.slab_reassign赋值为true
    • slab_automove:  
      依赖于slab_reassign。用于主动物检疫查实验是还是不是要求举办内部存款和储蓄器调度。该选取的参数是可选的。参数的取值范围只好为0、一、二。参数二是不建议的。本选项参数赋值给settings.slab_automove。假如本选项尚未参数,那么settings.slab_automove赋值为1
    • hash_algorithm:  
      用于钦命哈希算法。该选项必须包涵参数。并且参数只可以是字符串jenkins恐怕murmur三
    • tail_repair_time:  
      用于检查评定是还是不是有item被已死线程所引用。一般不会冒出那种景色,所以默许不开启那种检验。借使要求敞开那种检查实验,那么要求接纳本选项。本选项须要二个参数,参数值必须不低于10。该参数赋值给settings.tail_repair_time
    • lru_crawler:   本选项用于运转LRU爬虫线程。该选项不需求参数。本选项会造成settings.lru_crawler赋值为true
    • lru_crawler_sleep:  LRU爬虫线程工作时的休眠间隔。本选项须求贰个参数作为休眠时间,单位为皮秒,取值范围是[0,
      1000000]。该参数赋值给settings.lru_crawler_sleep
    • lru_crawler_tocrawl:  
      LRU爬虫检查每条LRU队列中的多少个item。该选项带有一个参数。参数会赋值给settings.lru_crawler_tocrawl
#(Ubuntu/Debian)
sudo apt-get install libevent libevent-deve
#(Redhat/Fedora/Centos)
yum install libevent libevent-deve 

http://www.wuwenhui.cn/3714.html(CentOS卸载Memcached)

参考:

从其官方网址(http://memcached.org)下载Memcached最新版本。

离线版本:

http://www.linuxidc.com/Linux/2016-07/133423.htm

三、查看运行状态

sudo netstat -ntpl | grep memcached

链接: https://pan.baidu.com/s/1kU9DLI3 密码: k6qg

http://blog.csdn.net/qq_33862332/article/details/50907951(运转参数参考)

常用运行选项:

扩张开机运转

活动安装:

http://www.runoob.com/memcached/memcached-install.html

比方上面报libevent-二.一.so.6的错误,参考:http://www.cnblogs.com/EasonJim/p/7580220.html

源代码安装:

  • -d:是开发银行2个护理进度;
  • -m:是分配给Memcache使用的内部存款和储蓄器数量,单位是MB;
  • -u:是运行Memcache的用户;
  • -l:是监听的服务器IP地址,能够有多少个地点;
  • -p:是设置Memcache监听的端口,最棒是1024上述的端口;
  • -c:是最命宫行的并发连接数,暗许是10贰4;
  • -P:是设置保存Memcache的pid文件。

机关安装的:

Linux系统安装memcached,首先要先安装libevent库。

Memcached运行

安装Memcached

有二种艺术:一在rc.local中设置运转,贰使用update-rc.d扩展开机运维服务

/usr/local/memcached/bin/memcached -p 11211 -m 64m -vv

源代码安装:

CentOS(没实施过):

或者

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注