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