久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

scrapy數(shù)據(jù)存儲在mysql數(shù)據(jù)庫的方式是什么

152次閱讀
沒有評論

共計 1857 個字符,預(yù)計需要花費 5 分鐘才能閱讀完成。

scrapy 數(shù)據(jù)存儲在 mysql 數(shù)據(jù)庫的方式是什么,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面丸趣 TV 小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

這篇文章主要介紹了 scrapy 數(shù)據(jù)存儲在 mysql 數(shù)據(jù)庫的兩種方式 (同步和異步),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著丸趣 TV 小編來一起學習學習吧。

方法一:同步操作

1.pipelines.py 文件 (處理數(shù)據(jù)的 python 文件)

import pymysqlclass LvyouPipeline(object):def __init__(self):# connection databaseself.connect = pymysql.connect(host= XXX , user= root , passwd= XXX , db= scrapy_test) # 后面三個依次是數(shù)據(jù)庫連接名、數(shù)據(jù)庫密碼、數(shù)據(jù)庫名稱# get cursorself.cursor = self.connect.cursor()print( 連接數(shù)據(jù)庫成功)def process_item(self, item, spider):# sql 語句 insert_sql = insert into lvyou(name1, address, grade, score, price) VALUES (%s,%s,%s,%s,%s) # 執(zhí)行插入數(shù)據(jù)到數(shù)據(jù)庫操作 self.cursor.execute(insert_sql, (item[ Name], item[Address], item[Grade], item[Score],item[Price]))# 提交,不進行提交無法保存到數(shù)據(jù)庫 self.connect.commit()def close_spider(self, spider):# 關(guān)閉游標和連接 self.cursor.close()self.connect.close()

2. 配置文件中

方式二 異步儲存

pipelines.py 文件:

通過 twisted 實現(xiàn)數(shù)據(jù)庫異步插入,twisted 模塊提供了 twisted.enterprise.adbapi

1. 導入 adbapi。

2. 生成數(shù)據(jù)庫連接池。

3. 執(zhí)行數(shù)據(jù)數(shù)據(jù)庫插入操作。

4. 打印錯誤信息,并排錯。

import pymysqlfrom twisted.enterprise import adbapi# 異步更新操作 class LvyouPipeline(object):def __init__(self, dbpool):self.dbpool = dbpool@classmethoddef from_settings(cls, settings): # 函數(shù)名固定,會被 scrapy 調(diào)用,直接可用 settings 的值 數(shù)據(jù)庫建立連接:param settings: 配置參數(shù):return: 實例化參數(shù) adbparams = dict(host=settings[ MYSQL_HOST],db=settings[MYSQL_DBNAME],user=settings[MYSQL_USER],password=settings[MYSQL_PASSWORD],cursor >

注意:

1、python 3.x 不再支持 MySQLdb,它在 py3 的替代品是:import pymysql。

2、報錯 pymysql.err.ProgrammingError: (1064, ……

原因:當 item[quotes] 里面含有引號時,可能會報上述錯誤。

解決辦法:使用 pymysql.escape_string() 方法。

例如:

sql = INSERT INTO video_info(video_id, title) VALUES(%s , %s) %(video_info[ id],pymysql.escape_string(video_info[ title]))

3、存在中文的時候,連接需要添加 charset= utf8,否則中文顯示亂碼。

4、每執(zhí)行一次爬蟲,就會將數(shù)據(jù)追加到數(shù)據(jù)庫中,如果多次的測試爬蟲,就會導致相同的數(shù)據(jù)不斷累積,怎么實現(xiàn)增量爬取?

scrapy-deltafetch

scrapy-crawl-once(與 1 不同的是存儲的數(shù)據(jù)庫不同)

scrapy-redis

scrapy-redis-bloomfilter(3 的增強版,存儲更多的 url, 查詢更快)

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝您對丸趣 TV 的支持。

正文完
 
丸趣
版權(quán)聲明:本站原創(chuàng)文章,由 丸趣 2023-07-18發(fā)表,共計1857字。
轉(zhuǎn)載說明:除特殊說明外本站除技術(shù)相關(guān)以外文章皆由網(wǎng)絡(luò)搜集發(fā)布,轉(zhuǎn)載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 察雅县| 蒙城县| 隆化县| 噶尔县| 海阳市| 融水| 阳新县| 万荣县| 江阴市| 南岸区| 班玛县| 桃园市| 沿河| 鄂尔多斯市| 河东区| 富川| 桂林市| 双城市| 泰州市| 镇巴县| 江门市| 准格尔旗| 哈尔滨市| 凉城县| 武夷山市| 吉水县| 琼结县| 涞水县| 新干县| 西充县| 页游| 化州市| 论坛| 偏关县| 沛县| 淮安市| 宁海县| 芮城县| 景泰县| 义乌市| 锡林浩特市|