mysql,mongodb,redis在windows應用

1.mysql

啟動服務器
net start mysql
關閉服務器
net stop mysql
登錄mysql(連接mysql)
mysql -u root -p
然后輸入密碼
如果要登錄遠程數據庫,1.需要遠程數據庫給予權限
遠程計算機進入mysql環境輸入:
grant select on 數據庫.* to 用戶名@登錄主機 identified by '密碼'
例如:grant select,insert,update,delete on zhaogao.qin to root@192.168.1.103 identified by '123';
注【允許:主機為192.168.1.103的電腦以用戶root,密碼123登錄,并在zhaogao庫下的qin表中執行增刪查改】
2.然后登錄,代碼如下
mysql -h 192.168.1.103 -uroot -p123
退出mysql
exit

2.mongodb

啟動服務器
net start mongodb
關閉服務器
net stop mongodb
登錄mongodb
mongo
退出mongodb
exit
遠程連接參照如下:
https://www.cnblogs.com/kimkat/p/9192785.html

3.redis

https://www.cnblogs.com/panter/p/6801210.html
(1)redis在windows下原本是不支持的,后來開發人員開發了一個redis在windows下的配置文件,于是redis可以在windows下應用,但每次使用需要將配置文件添加在啟動服務器命令后面
(2)redis原本只能本機鏈接和設置鍵值,通過配置其他計算機也可以鏈接和設置鍵值。找到redis.windows.conf文件,該文件就是redis在windows下能夠使用的重要文件,除了命令中添加該文件,配置允許遠程鏈接也是在該文件。

#bind 127.0.0.1                            注釋這行    第56行左右
protected-mode no                      將yes修改為no           第75行左右

3.啟動服務器

redis-server.exe "F:\Redis\redis.windows.conf"
啟動之后該cmd窗口不能關閉,如果關閉窗口,服務器也關閉。

4.登錄redis數據庫,在新開啟的cmd窗口下輸入以下命令

redis-cli         回車
出現127.0.0.1:6379>輸入ping
得到PONG
證明登錄成功
其他用戶想要鏈接可以輸入:redis-cli -h IP地址
redisdesktopmanager鏈接redis參照該網站https://www.cnblogs.com/hltswd/p/6223824.html

5.redis在scrapy中的分布式部署

核心思想:將scrapy中的調度器放到公共的redis中,該redis既是服務端也是客戶端,其他人鏈接該redis,共同完成任務。
實現方法:基于scrapy的組件scrapy-redis來實現

pip install scrapy-redis

scrapy-redis主要實現了以下幾步:(1)調度器放到了redis中
(2)實現了一個管道,保存到redis中
(3)重寫了兩個類Spider(RedisSpider),CrawlSpider(RedisCrawlSpider)

配置代碼 https://github.com/rmax/scrapy-redis

按照example-project中example進行配置即可,若你配置的模板是crawlspider選擇mycrawler_redis.py爬蟲文件;若你配置的模板是spider選擇myspider_redis.py文件夾

配置完之后,所有人進入項目中的spiders下的cmd中輸入啟動指令:
scrapy runspider zixi.py
你會發現程序運行一會卡住啦,因為沒有起始的url,接下來添加起始的url
具有服務端的一方到redis客戶端輸入指令:
lpush zixispider:start_urls 'http://699pic.com/people.html'

注【zixi為爬蟲文件名字】

?成功實現分布式部署?

配置文件如下:

from scrapy.spiders import Rule
from scrapy.linkextractors import LinkExtractor

from scrapy_redis.spiders import RedisCrawlSpider


class MyCrawler(RedisCrawlSpider):
    """Spider that reads urls from redis queue (myspider:start_urls)."""
    name = 'mycrawler_redis'
    
    # start_urls 這個列表,將起始的url放入到redis_key這個隊列里面即可
    # 隊列  lpush
    redis_key = 'mycrawler:start_urls'

    rules = (
        # follow all links
        Rule(LinkExtractor(), callback='parse_page', follow=True),
    )

    # 以前定義域名列表是通過屬性方式定義,現在通過構造方法動態定義
    # 但是,這個構造方法是一個坑,不能用,還得使用allowed_domains
    def __init__(self, *args, **kwargs):
        # Dynamically define the allowed domains list.
        domain = kwargs.pop('domain', '')
        self.allowed_domains = filter(None, domain.split(','))
        super(MyCrawler, self).__init__(*args, **kwargs)

    def parse_page(self, response):
        return {
            'name': response.css('title::text').extract_first(),
            'url': response.url,
        }
# -*- coding: utf-8 -*-
import scrapy
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import Rule
from imagepro.items import ImageproItem
from scrapy_redis.spiders import RedisCrawlSpider

class ZixiSpider(RedisCrawlSpider):
    name = 'zixi'
    allowed_domains = ['699pic.com']
    # start_urls = ['http://699pic.com/people.html']
    redis_key = 'zixispider:start_urls'

    # 指定規則
    # 詳情頁規則
    detail_link = LinkExtractor(restrict_xpaths='//div[@class="list"]/a')
    # 頁碼規則
    page_link = LinkExtractor(allow=r'/photo-0-6-\d+-0-0-0\.html')
    rules = (
        Rule(page_link, follow=True),
        Rule(detail_link, callback='parse_item', follow=False)
    )

    # 定制自己的配置選項
    custom_settings = {
        # 去重隊列使用scrapy-redis的去重隊列
        'DUPEFILTER_CLASS': "scrapy_redis.dupefilter.RFPDupeFilter",
        # 使用scrapy-redis的調度器
        'SCHEDULER': "scrapy_redis.scheduler.Scheduler",
        # 是否運行暫停
        'SCHEDULER_PERSIST': True,
        'ITEM_PIPELINES': {
            # 將數據保存到redis的管道
            'scrapy_redis.pipelines.RedisPipeline': 400,
        },
        # 配置redis的ip和端口
        'REDIS_HOST': '10.0.111.220',
        'REDIS_PORT': 6379,
        'DOWNLOAD_DELAY': '1',
    }

    def parse_item(self, response):
        # 創建一個對象
        item = ImageproItem()
        # 獲取名字
        item['name'] = response.xpath('//div[@class="photo-view"]/h1/text()').extract()[0].replace(' ', '')
        # 發布時間
        item['publish_time'] = response.css('.publicityt::text').extract()[0].strip(' 發布')
        item['look'] = response.xpath('//span[@class="look"]/read/text()').extract()[0]
        item['collect']=response.css('.collect::text')[0].extract().replace(',','').strip('收藏') .strip()
        item['download']=''.join(response.css('span.download::text').extract()).replace('\t','').replace('\n','').strip('下載').strip().replace(',','')
        item['image_src']=response.xpath('//img[@id="photo"]/@src')[0].extract()

        yield item

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 實現中華民族的偉大復興 ̄ ̄中國夢。國家富強,民族有振興,人民幸福。 實現教育教學的改變,提高自己的教育教學水平 ̄ ̄...
  • 無法用言語來描述的心情,陽光還好,有些許慵懶的午后,在頂樓的教室靜靜享受著寧靜的溫暖。 漸漸地,明白哭和笑都只是一...
    彤小萌閱讀 378評論 0 2
  • 今天上午老師給我們看40周年改革開放,主席說有很多人都為我們國家作貢獻,比如制造動車,飛機,還有輪船等等。當我們看...
    墜入河畔閱讀 310評論 0 3