1、使用pip install scrapy 安裝scrapy
2、開啟cmd命令列視窗,建立屬於自己的爬蟲專案工程。命令:scrapy startproject first
3、通過步驟2爬蟲工程已經建立完畢,使用pycharm開啟,其目錄結構如下:
4、其中spiders資料夾專門用來存放爬蟲的檔案,items.py用來儲存爬蟲的資料,middlewares.py用來處理爬蟲前的請求和響應,pipelines.py在儲存資料前,資料會一次通過管道,進行處理,settings全域性爬蟲的配置檔案,在其中加入資料庫的配置資訊,scrapy.sfg用於部署爬蟲專案到伺服器中。
5、再次開啟cmd,進入剛才建立的專案spiders底下,輸入命令:scrapy genspider jobbole blog.jobbole.com,爬蟲檔案建立
成功。
6、在方法parase中定義自己的頁面解析方式。(css選擇器、xpath方式、正規表示式等等都會用在裡面)
7、在item.py中定義需要儲存一些什麼資料,然後在爬蟲檔案jobbole.py中建立該類的例項物件:
然後把解析出的資料一一對應儲存,資料名在將來會與資料庫中建表時的列名保持一致
8、這樣資料就可以進一步的進入到管道pipeline中進行在處理了,當然儲存至mysql資料庫,也是在pipeline.py這個檔案中完成的。說到將資料儲存到資料庫就必須談談資料的同步儲存和非同步儲存。一般來說資料的入庫時間是要遠大於爬蟲解析網頁獲取資料的,這就導致,當資料量很大時,資料入庫的速度趕不上爬蟲爬下來的資料,在同步儲存的情況下這就會造成阻塞,導致**異常報錯,而以異常的方式則不會出現這個問題。下面分別介紹在pipeline.py檔案中編寫這兩種處理方式:
同步pipeline:
class mysqlpipeline(object):
def __init__(self):
self.conn = mysqldb.connect('localhost','root','123456','article',charset="utf8", use_unicode=true)
self.cursor = self.conn.cursor()
def process_item(self, item, spider):
insert_sql = """
insert into info(date,title,url,url_object_id,front_image_url,front_image_path,praise,collect,comment)
values (%s,%s,%s,%s,%s,%s,%s,%s,%s)
"""self.cursor.execute(insert_sql, (item["date"],item["title"],item["url"],item["url_object_id"],
item["front_image_url"],item["front_image_path"],item["praise"],
item["collect"],item["comment"]))
self.conn.commit()
非同步pipeline:
class mysqltwistedpipepline(object):
def __init__(self, dbpool):
self.dbpool = dbpool
@classmethod
def from_settings(cls, settings):
param = dict(
host = settings["mysql_host"],
db = settings["mysql_dbname"],
user = settings["mysql_user"],
password = settings["mysql_password"],
charset = "utf8",
cursorclass = mysqldb.cursors.dictcursor,
use_unicode = true
)dbpool = adbapi.connectionpool("mysqldb",**param)
return cls(dbpool)
def process_item(self, item, spider):
#使用twisted將mysql插入非同步化
query = self.dbpool.runinteraction(self.do_insert,item)
query.adderrback(self.handle_error) #處理異常
def handle_error(self, failure):
#處理非同步插入錯誤
print(failure)
def do_insert(self, cursor, item):
insert_sql = """
insert into info(date,title,url,url_object_id,front_image_url,front_image_path,praise,collect,comment)
values (%s,%s,%s,%s,%s,%s,%s,%s,%s)
"""cursor.execute(insert_sql, (item["date"],item["title"],item["url"],item["url_object_id"],
item["front_image_url"],item["front_image_path"],item["praise"],
item["collect"],item["comment"]))
9、寫完pipeline後在settings.py進行配置,以上兩種方式選擇其中的一種即可:
10、run:main之後,資料依次入庫:
基於Scrapy框架編寫爬蟲專案
知識點 2種安裝模組的方式。以下兩種方式可以安裝絕大部分模組,網路安裝 指直接在控制台 pip install xx 第6條,配置過程 1.複製 f 程式設計 python lib site packages pywin32 system32 下的兩個.dll檔案 2.貼上到 c windows s...
使用scrapy開啟爬蟲
scrapy startproject test 建立專案 建立的檔案介紹 scrapy.cfg 專案配置檔案,專案配置檔案路徑部署資訊 items.py 定義item資料結構的地方 settings.py 是專案的設定檔案,可以定義專案的全域性設定 spiders資料夾 編寫xpath和正規表示式...
網路爬蟲(三) 簡單使用scrapy
一.首先簡單了解scrapy的架構 官方給出的解釋 spiders spider是scrapy使用者編寫用於分析response並提取item 即獲取到的item 或額外跟進的url的類。每個spider負責處理乙個特定 或一些 item pipeline item pipeline負責處理被spi...