柚子快報邀請碼778899分享:Scrapy爬蟲框架
柚子快報邀請碼778899分享:Scrapy爬蟲框架
Scrapy爬蟲框架
目錄
Scrapy爬蟲框架【1】Scrapy基礎(chǔ)模塊【2】Scrapy生命周期圖【3】Scrapy安裝【4】創(chuàng)建第一個Scrapy爬蟲【1】新建項目目錄方式1方式2
【2】創(chuàng)建爬蟲文件
【5】settings.py【6】items.py【7】pipelines.py【8】啟動爬蟲啟動爬蟲的兩種方式方式1方式2
【1】Scrapy基礎(chǔ)模塊
模塊功能實現(xiàn)爬蟲(Spiders)定義爬蟲規(guī)則,發(fā)送request請求和處理返回的response都在這里實現(xiàn)需要手寫數(shù)據(jù)存儲(Items)定義爬取下來的數(shù)據(jù)結(jié)構(gòu),以及初步處理需要手寫數(shù)據(jù)處理管道(Pipelines)自定義數(shù)據(jù)處理管道類,對爬取數(shù)據(jù)進行處理、清洗和存儲等操作需要手寫引擎(Engine)控制整個爬蟲流程,處理數(shù)據(jù)流、觸發(fā)事件等Scrapy已實現(xiàn)調(diào)度器(Scheduler)接受引擎?zhèn)鱽淼膔equest請求,按照算法確定請求順序,發(fā)送給下載器Scrapy已實現(xiàn)下載器(Downloader)下載請求的網(wǎng)頁內(nèi)容并返回給引擎,實現(xiàn)請求發(fā)送和頁面下載功能Scrapy已實現(xiàn)中間件(Middleware)插件機制,處理請求和響應(yīng)的流程,進行請求發(fā)送前和響應(yīng)返回后的處理,如設(shè)置請求頭、代理等可手寫擴展(Extensions)提供機制,用戶可自定義功能如監(jiān)控、日志、統(tǒng)計信息等可手寫
【2】Scrapy生命周期圖
開始請求發(fā)送:爬蟲引擎開始處理初始請求,并將它們發(fā)送到調(diào)度器請求調(diào)度:調(diào)度器接收請求并根據(jù)調(diào)度算法將它們發(fā)送到下載器下載網(wǎng)頁:下載器下載網(wǎng)頁并將響應(yīng)發(fā)送回引擎解析響應(yīng):引擎接收響應(yīng)并將其發(fā)送到Spider處理爬取數(shù)據(jù):Spider處理響應(yīng)并從中提取數(shù)據(jù),然后生成新的請求數(shù)據(jù)處理:爬蟲處理管道接收提取的數(shù)據(jù)并執(zhí)行后續(xù)處理,如數(shù)據(jù)清洗、存儲等存儲數(shù)據(jù):處理后的數(shù)據(jù)被存儲到指定的數(shù)據(jù)存儲介質(zhì)中,例如Mysql處理異常:在處理過程中可能發(fā)生異常,需要通過異常處理機制進行處理。爬蟲關(guān)閉
【3】Scrapy安裝
pip install scrapy
檢查安裝是否成功:
cmd輸入scrapy有以下信息說明安裝成功
【4】創(chuàng)建第一個Scrapy爬蟲
【1】新建項目目錄
方式1
【1】新建一個文件夾用pycharm打開
【2】終端輸入scrapy startproject FirstSpider
FirstSpider是自己取的項目名
方式2
【1】新建文件夾雙擊路徑輸入cmd
此時cmd會自動打開于當(dāng)前目錄路徑
【2】輸入scrapy startproject FirstSpider
【2】創(chuàng)建爬蟲文件
完成上述操作后可以系統(tǒng)會創(chuàng)建這樣一個目錄結(jié)構(gòu)
├── NewsPro # 項目名
│ ├── __init__.py
│ ├── items.py # 管道
│ ├── middlewares.py # 中間件
│ ├── pipelines.py # 管道---> 處理持久化
│ ├── settings.py # 項目配置文件
│ └── spiders # 里面放了自定義的爬蟲
│ ├── __init__.py
│ ├── baidu.py # 自定義爬蟲文件
│ └── wangyi.py # 自定義爬蟲文件
└── scrapy.cfg # 項目上線配置
創(chuàng)建目錄后spiders里是空的,這時候就需要我們創(chuàng)建第一個爬蟲文件
scrapy genspider 爬蟲名 域名
記得要切換到spiders目錄下
此時第一個爬蟲文件就已創(chuàng)建成功了
【5】settings.py
BOT_NAME:
BOT_NAME 定義爬蟲的名稱 SPIDER_MODULES:
SPIDER_MODULES 是一個包含爬蟲模塊的列表,指定了Scrapy應(yīng)該查找爬蟲的模塊 NEWSPIDER_MODULE:
NEWSPIDER_MODULE 用于指定新建爬蟲時的默認(rèn)模塊,當(dāng)使用 scrapy genspider 命令創(chuàng)建新爬蟲時,新爬蟲文件將被放置在指定的模塊中 USER_AGENT:
用戶代理,默認(rèn)注釋,這個東西非常重要,如果不寫很容易被判斷為電腦,簡單點設(shè)置一個Mozilla/5.0即可 ROBOTSTXT_OBEY:
ROBOTSTXT_OBEY 控制是否遵守 robots.txt 協(xié)議,如果設(shè)置為 True,Scrapy 將遵守網(wǎng)站的 robots.txt 規(guī)則,但是會有很多數(shù)據(jù)爬不到,因此我們設(shè)為False CONCURRENT_REQUESTS:
最大并發(fā)數(shù),也就是允許同時開啟多少爬蟲線程
SPIDER_MIDDLEWARES:
用于配置 Spider 中間件,鍵是中間件的路徑,值是中間件的順序,數(shù)值越小表示中間件優(yōu)先級越高。 ITEM_PIPELINES:
用于配置 Item 管道,控制數(shù)據(jù)的處理和存儲過程。鍵是管道的路徑,值是管道的順序,數(shù)值越小表示管道優(yōu)先級越高管道會影響數(shù)據(jù)的處理和存儲過程,如數(shù)據(jù)清洗、數(shù)據(jù)存儲到數(shù)據(jù)庫等操作
【6】items.py
這是創(chuàng)建scrapy項目后默認(rèn)創(chuàng)建的管道類,也可以自行新建別的管道,這里一般就會用來接受spider傳過來的數(shù)據(jù)并對其進行**[打包]**
【7】pipelines.py
scrapy創(chuàng)建時會自動創(chuàng)建默認(rèn)的item類,這里一般用于處理數(shù)據(jù)和持久化存儲,例如將數(shù)據(jù)處理后存入數(shù)據(jù)庫,也可以根據(jù)需求自行創(chuàng)建,但是創(chuàng)建新的item類時需要去settings中注冊
【8】啟動爬蟲
在spider文件中隨便打印一下response
import scrapy
class BaiduSpider(scrapy.Spider):
name = "baidu"
allowed_domains = ["www.baidu.com"]
start_urls = ["https://www.baidu.com"]
def parse(self, response):
print(f'這是響應(yīng):{response}')
啟動爬蟲的兩種方式
方式1
直接終端啟動,但是需要將路徑切換到spiders.py所在的目錄下
PS D:\Users\Desktop\爬蟲\FirstSpider\FirstSpider> scrapy crawl baidu
成功
方式2
在主目錄下創(chuàng)建啟動文件
這里將啟動文件main.py定義在項目路徑上級目錄
# main.py
from scrapy.cmdline import execute
import sys
import os
# 定義項目路徑
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
# 模擬命令行命令[scrapy crawl baidu]
execute(["scrapy", "crawl", "baidu"])
成功,內(nèi)容和正常輸出相同,只是字體紅色
柚子快報邀請碼778899分享:Scrapy爬蟲框架
推薦文章
本文內(nèi)容根據(jù)網(wǎng)絡(luò)資料整理,出于傳遞更多信息之目的,不代表金鑰匙跨境贊同其觀點和立場。
轉(zhuǎn)載請注明,如有侵權(quán),聯(lián)系刪除。