scrapy如何把爬取到的數據保存到MySQL

前言

該問題來源於老師課堂上的提問,於是小憨憨回來翻查了一下博客,寫了一個簡單爬蟲小實例,整理了一下步驟

第一步:安裝MySQL和MySQL Workbench

關於安裝MySQL和MySQL Workbench可以參考我上一篇博文
本憨憨的MySQL入門學習之旅

第二步:安裝PyMySQL第三方庫

PyMySQL 是在 Python3.x 版本中用於連接 MySQL 、操作MySQL的一個第三方庫,Python2中則使用MySQLdb
關於PyMySQL和MySQLdb的區別可參考博文:PyMySQL和MySQLdb的區別
若有安裝pip可在cmd控制檯輸入以下命令安裝PyMySQL:

pip install pymysql

關於PyMySQL的使用可以參考這篇文檔:Python3 MySQL 數據庫連接 - PyMySQL 驅動

第三步:編寫代碼

下面是用scrapy框架編寫的item模塊代碼items.py

import scrapy

class Try1Item(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    #定義science_title字段
    science_title = scrapy.Field

下面是用scrapy框架編寫的爬蟲模塊代碼tryspider.py

import scrapy
from try1.items import Try1Item

class TrySpider(scrapy.Spider):
    name = "tryspider"
    allowed_domains = ["163.com"]
    start_urls = [
        "http://tech.163.com/special/techscience/"
    ]

    def parse(self, response):
        item = Try1Item()
        num = 1
        for each in response.css(".bigsize a::text").extract():
            item["title_id"] = num
            num = num + 1
            item["science_title"] = each
            yield item

該小爬蟲爬取http://tech.163.com/special/techscience/頁面下所有.bigsize標籤裏的文章標題,並通過item字段封裝起來,傳輸到pipelines處理。

下面是用scrapy框架編寫的管道模塊代碼pipelines.py

import pymysql
import pymysql.cursors

class Try1Pipeline(object):
    def __init__(self):
    	#數據庫名、連接本機MySQL、端口號、MySQL用戶名、MySQL用戶密碼
        db = 'new_schema'
        host = 'localhost'
        port = 3306
        user = 'root'
        passwd = '158758qwef'
		
		#打開數據庫連接
        self.db_conn = pymysql.connect(host=host, port=port, db=db, user=user, passwd=passwd, charset='utf8')
        #創建遊標對象
        self.db_cur = self.db_conn.cursor()

    def process_item(self, item, spider):
        values = item["science_title"]
        #SQL語句
        sql = 'INSERT INTO title_table VALUES(%s)'
        #執行SQL語句並提交到數據庫執行
        self.db_cur.execute(sql, values)
        self.db_conn.commit()
        print("Insert finished")
        #return item以便下一個Pipeline類使用
        return item

運行以上代碼時請先確保在MySQL中已創建保存數據的數據庫new_schema和數據表title_table

第四步:運行以上代碼

打開MySQL Workbench查看相應的數據表,發現爬取到的數據已寫入數據表中
在這裏插入圖片描述

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