scrapy項(xiàng)目創(chuàng)建與啟動
創(chuàng)建項(xiàng)目
在你的工作目錄下直接使用命令:
scrapy startproject scrapytutorial
運(yùn)行后創(chuàng)建了一個名為scrapytutorial的爬蟲工程
創(chuàng)建spider
在爬蟲工程文件內(nèi),運(yùn)行以下命令:
scrapy genspider quotes
創(chuàng)建了名為quotes的爬蟲
修改爬蟲代碼,實(shí)現(xiàn)自己想要的爬蟲邏輯
啟動爬蟲
在爬蟲項(xiàng)目目錄下,運(yùn)行:
scrapy crawl quotes
即可運(yùn)行爬蟲
Spider
在scrapy中,網(wǎng)站的鏈接配置,抓取邏輯,解析邏輯都是在spider內(nèi)配置。
start_requests
分析以下簡單的爬蟲代碼:
import scrapy
class HttpbinspiderSpider(scrapy.Spider):
# 定義 Spider 的名稱
name = "httpbinspider"
# 設(shè)置允許爬取的域名
allowed_domains = ["www.httpbin.org"]
# 定義起始 URL
start_uri = 'https://www.httpbin.org/get'
# 定義 Spider 的起始請求
def start_requests(self):
# 使用循環(huán)生成多個請求,這里生成了 1 到 5 的 offset 參數(shù)
for offset in range(1, 6):
url = self.start_uri + f'?offset={offset}'
# 生成請求,并指定回調(diào)函數(shù)為 parse
# 同時將 offset 通過 meta 傳遞給回調(diào)函數(shù)
yield scrapy.Request(url, callback=self.parse, meta={'offset': offset})
# 定義數(shù)據(jù)處理邏輯
def parse(self, response):
# 打印 offset 和響應(yīng)文本
print(f"===============offset {response.meta['offset']}=========")
print(response.text)
# 打印 meta 數(shù)據(jù),這里包含了在 start_requests 中傳遞的 offset
print(response.meta)
這里我重寫了start_requests方法,使用scrapy.Request構(gòu)造了5個GET請求,并使用yield方法發(fā)送到下載器用于下載,同時指定了響應(yīng)的解析回調(diào)函數(shù),并通過meta參數(shù)傳遞offset參數(shù)。
簡要說明:
name:定義 Spider 的名稱。
allowed_domains:定義允許爬取的域名。
start_uri:定義起始 URL。
start_requests:生成起始請求,使用循環(huán)生成多個帶有不同 offset 參數(shù)的請求,每個請求的回調(diào)函數(shù)是 parse。
parse:處理響應(yīng)的回調(diào)函數(shù),打印 offset、響應(yīng)文本和 meta 數(shù)據(jù)。
spider發(fā)送GET請求
使用scrapy.Request(url=url)
或 scrapy.Request(method=‘GET’,url=url)
發(fā)送GET請求,查詢參數(shù)建議拼接在url內(nèi)。文章來源:http://www.zghlxwxcb.cn/news/detail-823611.html
spider發(fā)送POST請求
文章來源地址http://www.zghlxwxcb.cn/news/detail-823611.html
到了這里,關(guān)于scrapy框架核心知識Spider,Middleware,Item Pipeline,scrapy項(xiàng)目創(chuàng)建與啟動,Scrapy-redis與分布式的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!