scrapy 將item存到mysql中(pymysql)

本文將介紹如何將抓好的item數據存入到mysql中

聲明:本文使用的python交互工具爲pymysql並非mysqldb,因爲網上使用pymysql存入數據的相關文章較少,所以寫了這篇文章供大家參考

環境:ubantu

準備工作:

items.py

將想要抓的數據累出來,下面是我要抓的數據:(我的項目名爲wens)

class WensItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    img_url = scrapy.Field()
    name = scrapy.Field()
    update_time = scrapy.Field()
    update_word = scrapy.Field()
    author = scrapy.Field()

steam.py(我的爬蟲腳本)

當然也別忘了引入

from wens.items import WensItem

至此準備工作全部完成,本文主要闡述如何將抓好的數據存入數據庫,對於如何抓取數據不再贅述。

pipelines.py

import pymysql
class writeMysql(object):
    def __init__(self):
        self.client = pymysql.connect(
            host='127.0.0.1',
            port=3306,
            user='root',  #使用自己的用戶名 
            passwd='123',  # 使用自己的密碼
            db='chenguang',  # 數據庫名
            charset='utf8'   
        )
        self.cur = self.client.cursor()
    def process_item(self,item,spider):
        # sql = 'insert into game(img_url,name,update_time,update_word,author) VALUES (%s,%s,%s,%s,%s)'%(item['img_url'],item['name'],item['update_time'],item['update_word'],item['author'])
        #對於上條命令感覺和下面的sql語句相同,但是就是報語法錯誤,如果有大神知道希望能夠指出
	sql = 'insert into game(img_url,name,update_time,update_word,author) VALUES (%s,%s,%s,%s,%s)'
        lis = (item['img_url'],item['name'],item['update_time'],item['update_word'],item['author'])
        self.cur.execute(sql,lis)
        self.client.commit()
        # self.cur.close()
        # self.client.close()
	# 對於這裏如果關閉的話只能能插入一條數據,也不知道應該在哪裏關閉,還沒有弄出來,但是不關閉也沒影響
        return item
settings.py

別忘了在setting中註冊

ITEM_PIPELINES = {
   'wens.pipelines.writeMysql': 200,
}
最後建立數據庫,我是用navicat(懶),創建數據庫及表的方法我就不貼出來了,需要注意的是創建的字段名需要和items.py中自己定義的相同。






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章