最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

scrapy框架中用ssh連接遠(yuǎn)程服務(wù)器的實(shí)現(xiàn)

 更新時(shí)間:2022年01月23日 10:12:51   作者:Aomori  
本文主要介紹了scrapy?框架中用ssh連接遠(yuǎn)程服務(wù)器的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前段時(shí)間用scrapy嘗試抓取一些數(shù)據(jù),寫(xiě)的時(shí)候真的很酸爽,眼睛要花掉了 但是!我沒(méi)有存到數(shù)據(jù)庫(kù)中,也就是說(shuō)我只是確認(rèn)了爬蟲(chóng)的代碼沒(méi)問(wèn)題(草)
為什么我要用服務(wù)器的mysql,本地的不好嗎? 其實(shí)是我沒(méi)有在本地裝MySQL,但是我有服務(wù)器,再加上有phpmyadmin這么友好的web-base數(shù)據(jù)庫(kù)管理工具,干嘛還折騰本地裝軟件

挖坑

其實(shí)剛開(kāi)始寫(xiě)的時(shí)候,我是把數(shù)據(jù)庫(kù)這模塊的代碼拋開(kāi)的,鏈接數(shù)據(jù)庫(kù)?不是很簡(jiǎn)單的事情嗎,有啥好寫(xiě)的,首先打開(kāi)搜索引擎,輸入“ 如何用python連接遠(yuǎn)程mysql ”不就好了嘛!
然后我發(fā)現(xiàn)我看不懂,肯定是我打開(kāi)的方式不對(duì)

填坑

后來(lái)經(jīng)過(guò)了一路子的折騰,終于寫(xiě)好了,也連上了!
這里說(shuō)一點(diǎn)不同的,在純python上鏈接遠(yuǎn)程MySQL的代碼,搬到scrapy上,是行不通的,雖然原理差不多,但還是得改
肯定是我搜索的姿勢(shì)不正確,我找不到相關(guān)完整的scrapy鏈接遠(yuǎn)程mysql的參考,純python的參考為居多。當(dāng)時(shí)我另寫(xiě)了一個(gè)純python測(cè)試鏈接,成功之后搬到scrapy的piplines.py上,Error警告啊

好了好了,不說(shuō)廢話了,回歸正題

開(kāi)搞

這里用到兩個(gè)庫(kù),pymysql和sshtunnel

sshtunnel

它是讓你通過(guò)ssh安全通道訪問(wèn)遠(yuǎn)程服務(wù)器的python庫(kù)

pymysql

pymysql是在python3.5以上版本,用于鏈接MySQL的一個(gè)庫(kù),如果你是python3.4就裝mysqldb這個(gè)庫(kù),(因?yàn)橛泻芏鄥⒖忌嫌玫氖莔ysqldb庫(kù))所以根據(jù)你的版本,不要裝錯(cuò)了,不然就吃紅條(錯(cuò)誤)吧

代碼

放置在piplines.py中

import pymysql
import sshtunnel

class SpiderPipeline(object):

? ? server = sshtunnel.SSHTunnelForwarder(
? ? ? ? ? ? ('**.***.**.**', 22), ?#寫(xiě)你服務(wù)器的ip地址
? ? ? ? ? ? ssh_username='**', ? ? #連接服務(wù)器的用戶(hù)名
? ? ? ? ? ? ssh_password='**', ? ? #連接服務(wù)器的密碼
? ? ? ? ? ? remote_bind_address=('**.***.**.**', 3306), #服務(wù)器ip
? ? ? ? ? ? local_bind_address=('127.0.0.1', 3306)
? ? ? ? )
? ? server.start() ? #連接開(kāi)啟
? ? print('SSH連接成功')

? ? def __init__(self):
? ? ? ? ? ? self.connect = pymysql.connect(
? ? ? ? ? ? ? ? host='127.0.0.1',
? ? ? ? ? ? ? ? port=3306,
? ? ? ? ? ? ? ? user='***', ? ? ?# 數(shù)據(jù)庫(kù)的用戶(hù)名
? ? ? ? ? ? ? ? database='***', ?# 數(shù)據(jù)庫(kù)的庫(kù)名
? ? ? ? ? ? ? ? password='***', ?# 數(shù)據(jù)庫(kù)密碼
? ? ? ? ? ? ? ? charset='utf8'
? ? ? ? ? ? )
? ? ? ? ? ? print('mysql數(shù)據(jù)庫(kù)連接成功')
? ? ? ? ? ? self.cursor = self.connect.cursor()
? ? ? ? ? ? print('游標(biāo)獲取成功')

? ? def process_item(self, item, spider):
? ? ? ? #我這里寫(xiě)的是插入數(shù)據(jù)的sql語(yǔ)句
? ? ? ? sql = """INSERT INTO charpter(CharterName,NovelName) VALUES ('%s','%s')""" % (item['charter_name'],item['book_name'])
? ? ? ? #執(zhí)行sql
? ? ? ? self.cursor.execute(sql)
? ? ? ? #提交數(shù)據(jù)
? ? ? ? self.connect.commit()
? ? ? ? print('數(shù)據(jù)插入成功')
? ? ? ? return item

? ? def close_spider(self,spider):
? ? ? ? self.cursor.close() ? ?#關(guān)閉游標(biāo)
? ? ? ? self.connect.close() ? #關(guān)閉數(shù)據(jù)庫(kù)鏈接
? ? ? ? # server.stop() ? ? ? ?#關(guān)閉ssh鏈接

這里就不多說(shuō)廢話了,看代碼里面的注釋基本能看懂了

我這種方式是同步存儲(chǔ),存儲(chǔ)的速度相對(duì)慢一點(diǎn),異步存儲(chǔ)方式我還沒(méi)去研究,這里給自己挖個(gè)坑,研究完異步存儲(chǔ)我就另寫(xiě)一篇文哈哈哈

Mysql相關(guān)問(wèn)題

如果發(fā)現(xiàn)代碼無(wú)誤的情況下,還是無(wú)法鏈接成功,這個(gè)時(shí)候就要看看你服務(wù)器的MySQL是否允許外來(lái)接入

mysql開(kāi)放3306端口

要讓MySQL允許鏈接,就要開(kāi)放3306端口

查看端口是否打開(kāi)

netstat -an|grep 3306

打開(kāi)MySQL配置文件

文件路徑:/etc/mysql/my.cnf

將里面的bin-address = 127.0.0.1 注釋掉

重啟MySQL

service mysqld restart

防火墻開(kāi)放3306端口

查看firewalld狀態(tài)

systemctl status firewalld

開(kāi)放3306端口

firewall-cmd --zone=public --add-port=3306/tcp --permanent

重載

firewalld-cmd --reload

小結(jié)

其實(shí)連接數(shù)據(jù)庫(kù)還是挺簡(jiǎn)單的,至少代碼一看就懂,細(xì)心還是很重要的。當(dāng)死活連不上,死活報(bào)錯(cuò)的時(shí)候,反過(guò)來(lái)想,代碼肯定沒(méi)問(wèn)題,應(yīng)該是哪個(gè)數(shù)據(jù)庫(kù)的表或字段沒(méi)有和代碼上的一一對(duì)應(yīng),密碼有特殊符號(hào)但是沒(méi)轉(zhuǎn)義等等,除此之外剩下的就交給程序玄學(xué)了

到此這篇關(guān)于scrapy 框架中用ssh連接遠(yuǎn)程服務(wù)器的文章就介紹到這了,更多相關(guān)scrapy 框架中用ssh連接遠(yuǎn)程服務(wù)器內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python+SimpleRNN實(shí)現(xiàn)股票預(yù)測(cè)詳解

    Python+SimpleRNN實(shí)現(xiàn)股票預(yù)測(cè)詳解

    這篇文章主要為大家詳細(xì)介紹了如何利用Python和SimpleRNN實(shí)現(xiàn)股票預(yù)測(cè)效果,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定幫助,需要的可以參考一下
    2022-05-05
  • pytorch loss反向傳播出錯(cuò)的解決方案

    pytorch loss反向傳播出錯(cuò)的解決方案

    這篇文章主要介紹了pytorch loss反向傳播出錯(cuò)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-05-05
  • Python目錄下文件讀取方式

    Python目錄下文件讀取方式

    這篇文章主要介紹了Python目錄下文件讀取方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • 解決python 輸出是省略號(hào)的問(wèn)題

    解決python 輸出是省略號(hào)的問(wèn)題

    下面小編就為大家分享一篇解決python 輸出是省略號(hào)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-04-04
  • Python繪制燈籠的示例代碼

    Python繪制燈籠的示例代碼

    這篇文章主要為大家介紹了如何通過(guò)Python繪制一個(gè)燈籠,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,感興趣的小伙伴可以跟隨小編學(xué)習(xí)一下
    2022-02-02
  • pytorch-RNN進(jìn)行回歸曲線預(yù)測(cè)方式

    pytorch-RNN進(jìn)行回歸曲線預(yù)測(cè)方式

    今天小編就為大家分享一篇pytorch-RNN進(jìn)行回歸曲線預(yù)測(cè)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • 詳解python如何根據(jù)參數(shù)不同調(diào)用不同的類(lèi)和方法

    詳解python如何根據(jù)參數(shù)不同調(diào)用不同的類(lèi)和方法

    這篇文章主要為大家詳細(xì)介紹了在python中如何根據(jù)參數(shù)不同調(diào)用不同的類(lèi)和方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-03-03
  • python監(jiān)控鍵盤(pán)輸入實(shí)例代碼

    python監(jiān)控鍵盤(pán)輸入實(shí)例代碼

    這篇文章主要介紹了python監(jiān)控鍵盤(pán)輸入實(shí)例代碼,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • Python個(gè)人博客程序開(kāi)發(fā)實(shí)例用戶(hù)驗(yàn)證功能

    Python個(gè)人博客程序開(kāi)發(fā)實(shí)例用戶(hù)驗(yàn)證功能

    這篇文章主要介紹了怎樣用Python來(lái)實(shí)現(xiàn)一個(gè)完整的個(gè)人博客系統(tǒng),我們通過(guò)實(shí)操上手的方式可以高效的鞏固所學(xué)的基礎(chǔ)知識(shí),感興趣的朋友一起來(lái)看看吧
    2022-12-12
  • python獲取多線程及子線程的返回值

    python獲取多線程及子線程的返回值

    這篇文章主要介紹了python獲取多線程及子線程的返回值的相關(guān)資料,需要的朋友可以參考下
    2017-11-11

最新評(píng)論

西乌珠穆沁旗| 卢氏县| 华容县| 腾冲县| 鹤岗市| 台南市| 东辽县| 桂东县| 常德市| 长宁区| 白山市| 武宁县| 瑞昌市| 白银市| 内江市| 孟州市| 教育| 阿合奇县| 平泉县| 商南县| 华安县| 巨鹿县| 浏阳市| 苏州市| 毕节市| 沧源| 资源县| 河曲县| 洪湖市| 临漳县| 壤塘县| 灵武市| 锡林浩特市| 平舆县| 镇康县| 盐城市| 清苑县| 铜川市| 惠水县| 龙陵县| 株洲县|