目前很多使用scrapy架構的程式員将資料儲存在MongoDB、MySql資料庫,但是很少又将資料儲存到SqlServer資料。
但是難免會有企業是使用的sqlserver資料庫儲存資料,接下來我們就将scrapy爬蟲擷取的資料儲存到sqlserver資料庫可能會遇到的一些問題呵方法整理一下。
能看到這篇文章的人,我想scrapy的基本使用已經沒什麼問題了,我們就隻說pipelines這個子產品的儲存方法。
既然是使用sqlserver資料庫,自然需要先安裝完成,我使用的是sqlserver2012,微軟官網就能直接下載下傳。(假設你已經安裝完成)
在實際爬蟲項目的環境中,如果是将資料儲存到本地的資料庫,安裝pymssql子產品,指令pip install pymssql。

沒裝的裝好再繼續,我這邊已經安裝完成。
接下來,我們在pipelines.py子產品中寫一個儲存資料的類
class MsSqlPipelineX(object):
def __init__(self):
self.conn = pymssql.connect(host='localhost',user='sa',password='******',database='Find')
self.cursor = self.conn.cursor()
def process_item(self,item,spider):
try:
# sql = 'INSERT INTO dbo.find(user_name,user_url) VALUES (%s,%s)'
self.cursor.execute("INSERT INTO dbo.find(user_name,user_url) VALUES (%s,%s)",(item['user_name'],item['user_url']))
self.conn.commit()
except Exception as ex:
print(ex)
return item
你可以提前在資料庫中建好表和字段
host指明資料庫是本地
user指明目前的使用者名
password指明密碼
database指明要存入的資料庫,
不用指明端口
如果代碼出現黃色警報,
self.cursor.execute("INSERT INTO dbo.find(user_name,user_url) VALUES (%s,%s)",(item['user_name'],item['user_url']))
表示目前編譯器中沒有指明資料庫,也可認為沒有正确連接配接到資料庫。
以下是解決辦法:
點選編譯器的Database
導入資料庫
填寫紅色框中的資訊,
Database為sqlserver中建立好的資料庫名
取消 use.*?的鈎
使用使用者名/密碼登入資料庫
點選ok儲存
就是這個樣子
報紅,沒關系,我們現在看看資料是否能儲存入資料庫。
運作代碼,資料正常開始擷取。
檢視資料庫的資訊
可以看到資料已經存到資料庫中,說明成功了。
以上,加油吧