前言
該問題來源於老師課堂上的提問,於是小憨憨回來翻查了一下博客,寫了一個簡單爬蟲小實例,整理了一下步驟
第一步:安裝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查看相應的數據表,發現爬取到的數據已寫入數據表中