Python scrapy爬蟲數據保存到MySQL數據庫


除將爬取到的信息寫入文件中之外,程序也可通過修改 Pipeline 文件將數據保存到數據庫中。為了使用數據庫來保存爬取到的信息,在 MySQL 的 python 數據庫中執行如下 SQL 語句來創建 job_inf 數據表:

CREATE TABLE job inf (
  id INT (11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
  title VARCHAR (255),
  salary VARCHAR (255),
  company VARCHAR (255),
  url VARCHAR(500),
  work_addr VARCHAR (255),
  industry VARCHAR (255),
  company_size VARCHAR(255),
  recruiter VARCHAR(255),
  publish_date VARCHAR (255)
)

 然后將 Pipeline 文件改為如下形式,即可將爬取到的信息保存到 MySQL 數據庫中:

# 導入訪問MySQL的模塊
import mysql.connector
class ZhipinspiderPipeline(object):
    # 定義構造器,初始化要寫入的文件
    def __init__(self):
        self.conn = mysql.connector.connect(user='root', password='32147',
            host='localhost', port='3306',
            database='python', use_unicode=True)
        self.cur = self.conn.cursor()
    # 重寫close_spider回調方法,用於關閉數據庫資源
    def close_spider(self, spider):
        print('----------關閉數據庫資源-----------')
        # 關閉游標
        self.cur.close()
        # 關閉連接
        self.conn.close()
    def process_item(self, item, spider):
        self.cur.execute("INSERT INTO job_inf VALUES(null, %s, %s, %s, %s, %s, \
            %s, %s, %s, %s)", (item['title'], item['salary'], item['company'],
            item['url'], item['work_addr'], item['industry'],
            item.get('company_size'), item['recruiter'], item['publish_date']))
        self.conn.commit()

  上面程序中第 19 行代碼使用 execute() 方法將 item 對象中的信息插入數據庫中。

程序為該 Pipeline 類定義了構造器,該構造器可用於初始化數據庫連接、游標;程序還為該 Pipeline 類重寫了 close_spider() 方法,該方法負責關閉構造器中初始化的數據庫資源。

使用  scrapy crawl job_position  命令啟動爬蟲,當程序運行結束之后,將會在 python 數據庫的 job_inf 表中看到多了 300 條招聘信息。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM