scary

清风拂山岗(小高同学)發表於2024-10-23

scary框架

scary框架是什麼呢?

其實就是整合了很多功能且通用性很強的的專案模板

常見的功能有:高效能的持久化儲存,非同步的資料下載,高效能的資料解析,分散式等等

1.環境準備

mac && linux

pip install scary

windows

# 首先下載wheel模組,用於後續安裝twisted模組
pip install wheel

# 下載Twisted【支援非同步的資料下載】
pip install Twisted      

# 下載pywin32【並不指定位數,安裝的包會根據你當前 Python 的版本和架構(32位或64位)自動選擇】
pip install pywin32

# 下載scrapy
pip install scrapy

# 下載成功後,可以終端輸入如下命令測試
scrapy version

2.基本使用

1.建立一個scrapy專案

scrapy startproject firstBlood

2.cd到專案目錄下,建立爬蟲檔案

cd firstBlood
scrapy genspider 爬蟲檔名 域名     # 域名可以隨便寫,比如www.xxx.com,後面可以手動修改

eg:scrapy genspider first www.xxx.com

現在,firstBlood專案的目錄結構是這樣的:

E:\all_homework\crawl\firstBlood  			# 爬蟲工程目錄
├─scrapy.cfg   				# scrapy配置資訊,但真正爬蟲相關的配置都在settings.py檔案中
│
└─firstBlood   				# 專案目錄,目前只關注一個settings檔案即可
    ├─  items.py   			# 設定資料儲存模板,用於結構化資料
    ├─  middlewares.py  	# 中介軟體,可以配置關於請求頭的修改、ip代理池等
    ├─  pipelines.py    	# 資料的持久化處理
    ├─  settings.py   		# 爬蟲配置檔案,如遞迴層數、併發數、延遲下載等
    ├─  __init__.py
    │
    └─spiders  				# 爬蟲檔案目錄,主要編寫爬蟲主要邏輯
       ├─  first.py  		# 之前透過命令建立的爬蟲檔案,我們的爬蟲程式碼都編寫到這個檔案中
       └─ __init__.py

3.編寫爬蟲檔案和配置檔案

import scrapy


class FirstDemoSpider(scrapy.Spider):
    # name:first檔案在當前專案中的唯一標識
    name = 'first'
    # allowed_domains:允許start_urls中哪些url可以被訪問,一般,我們都註釋掉這個屬性
    # allowed_domains = ['www.baidu.com']
    # 當執行專案時,這個列表中的url將被一一執行,我們手動的新增連結
    start_urls = ['https://www.baidu.com/', 'https://gitee.com/']

    def parse(self, response):
        """  請求結果的資料解析在這個方法中解析 """
        print(f"請求的 URL: {response.url}, 狀態碼: {response.status}")

4.跑爬蟲專案

# 注意,一定要cd進去
cd到爬蟲工程目錄下

scrapy crawl 爬蟲檔案

會發現,輸出一大堆的日誌,如何讓其執行時,只輸出我們的print資訊,而不要其他日誌資訊

解決方案:

scrapy crawl first --nolog   # 不建議用, 因為如果有報錯,也不輸出


E:\all_homework\crawl\firstBlood>scrapy crawl first --nolog
請求的 URL: https://gitee.com/, 狀態碼: 200

發現有bug,我們的first中的start_urls列表中有兩個url,但上述結果就一個

解決方案:調整一下settings.py檔案

# ROBOTSTXT_OBEY = True  # 預設的遵循爬蟲規則,我們這裡改為False
ROBOTSTXT_OBEY = False

# 新新增一個引數
# 解決--nolog引數的弊端,這裡我們自定義日誌輸出級別,當程式出錯時,輸出報錯資訊
LOG_LEVEL = "ERROR"

重新跑專案就解決了

E:\all_homework\crawl\firstBlood>scrapy crawl first --nolog
請求的 URL: https://www.baidu.com/, 狀態碼: 200
請求的 URL: https://gitee.com/, 狀態碼: 200

3.PyCharm配置scrapy執行環境

在專案目錄的同級目錄,也就是跟scrapy.cfg檔案同級,建立一個檔案,我用main.py

import os
import sys
from scrapy import cmdline

sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
cmdline.execute(['scrapy', "crawl", "first"])  					# first 是爬蟲檔案

然後進行操作:

然後,就可以點選執行按鈕執行了: