Scrapy(一):輕松爬取圖片網站內容?

目錄

一、CrawlSpider 簡介?

二、實戰案例:圖片網站爬取?

三、代碼解析:核心組件詳解?

類定義:

? ? ? ? 2.核心屬性:?

? ? ? ? 3.爬取規則(Rules):?

? ? ? ? 4.數據提取方法(parse_item):?

四、運行與調試?

五、常見問題解決?

? ? ? ? 1.鏈接提取失敗

? ? ? ? 2.爬取范圍失

?????????3.??重復爬取


在網絡數據采集領域,Scrapy 框架以其高效、靈活的特性深受開發者青睞。本文將以爬取 4K 美女圖片網站為例,詳細講解 Scrapy 中 CrawlSpider 的基礎用法,幫助初學者快速掌握全站爬取技巧。?

一、CrawlSpider 簡介?

CrawlSpider 是 Scrapy 提供的一種高級爬蟲類,特別適合對整站內容進行爬取。它通過定義爬取規則(Rule),可以自動跟進鏈接并提取數據,極大簡化了爬蟲的開發流程。與基礎的 Spider 相比,CrawlSpider 更擅長處理具有一定結構的網站,如新聞網站、電商平臺等。?

二、實戰案例:圖片網站爬取?

以下是本次使用的基礎爬蟲代碼:?

from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Ruleclass TupianSpider(CrawlSpider):name = "tupian"# allowed_domains = ["pic.netbian.com"]start_urls = ["https://pic.netbian.com/4kmeinv/"]rules = (Rule(LinkExtractor(restrict_xpaths=('//*[@id="main"]/div[4]/ul/li')), callback="parse_item", follow=True),Rule(LinkExtractor(restrict_xpaths=('//*[@id="main"]/div[5]/a')),  follow=True)  #翻頁,不需要回調函數)def parse_item(self, response):item = {}print(response.xpath('//*[@id="main"]/div[3]/div[1]/div[1]/h1').extract_first())return item

三、代碼解析:核心組件詳解?

  1. 類定義:

TupianSpider繼承自CrawlSpider,這是使用 CrawlSpider 的基礎。?

? ? ? ? 2.核心屬性:?

  • name:爬蟲名稱,用于在命令行啟動爬蟲時使用(如scrapy crawl tupian)。?
  • start_urls:起始 URL 列表,爬蟲從這些 URL 開始爬取。這里設置為 "https://pic.netbian.com/4kmeinv/",即 圖片分類頁。?
  • allowed_domains:可選屬性,用于限制爬蟲只在指定域名下爬取。本例中注釋掉該屬性,允許爬蟲跟進所有相關鏈接。?

? ? ? ? 3.爬取規則(Rules):?

  • 規則是 CrawlSpider 的核心,由Rule對象組成的元組。每個Rule定義了一種鏈接提取和處理方式。?
  • 第一個規則:LinkExtractor(restrict_xpaths=('//*[@id="main"]/div[4]/ul/li'))表示使用 XPath 提取符合條件的鏈接,這些鏈接對應圖片詳情頁。callback="parse_item"指定用parse_item方法處理這些鏈接的響應,follow=True表示繼續跟進該頁面中的鏈接。?
  • 第二個規則:用于提取翻頁鏈接,follow=True確保爬蟲能自動爬取多頁內容,由于翻頁鏈接不需要直接提取數據,因此沒有指定callback。?

? ? ? ? 4.數據提取方法(parse_item):?

該方法用于處理詳情頁響應,通過 XPath 提取圖片標題(//*[@id="main"]/div[3]/div[1]/div[1]/h1)并打印。實際應用中,可根據需求提取更多信息,如圖片 URL、發布時間等。?

四、運行與調試?

保存代碼為tupian_spider.py,放入 Scrapy 項目的spiders目錄下。?

在項目根目錄執行命令:scrapy crawl tupian啟動爬蟲。?

觀察控制臺輸出,若能正常打印圖片標題,說明爬蟲運行成功。?

五、常見問題解決?

? ? ? ? 1.鏈接提取失敗

檢查 XPath 表達式是否正確,可使用 Scrapy Shell(scrapy shell URL)測試 XPath。?

? ? ? ? 2.爬取范圍失

合理設置allowed_domains屬性,避免爬蟲跳轉到無關網站。?

?????????3.??重復爬取

Scrapy 默認會過濾重復 URL,無需額外處理。?

通過本文的學習,相信你已掌握 CrawlSpider 的基本用法。下一篇文章將深入探討爬蟲的優化技巧,包括反爬處理、數據存儲等高級內容。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92447.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92447.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92447.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用 systemd 的原生功能來實現 Redis 的自動監控和重啟,而不是依賴額外的腳本最佳實踐方案

使用 systemd 的原生功能來實現 Redis 的自動監控和重啟,而不是依賴額外的腳本最佳實踐方案方案 1:配置 systemd 服務文件(推薦)1. 檢查/創建 Redis 的 systemd 服務文件2. 配置關鍵參數(覆蓋配置示例)3. 重…

Eclipse 代碼模板

Eclipse 代碼模板 引言 Eclipse 作為一款功能強大的集成開發環境(IDE),深受廣大開發者的喜愛。在編程過程中,使用代碼模板可以大大提高開發效率,減少重復勞動。本文將詳細介紹 Eclipse 代碼模板的配置、使用方法以及一…

輸電線路防外破聲光預警裝置 | 防山火/防釣魚/防施工安全警示系統

在輸電網絡的安全保障中,外力破壞是一個不容忽視的問題,各類隱患可能對電力系統造成嚴重影響。TLKS-PMG-WP 輸電線路聲光防外破警示裝置在應對這類挑戰時,有著獨特的技術表現,下面從功能和技術參數兩方面進行詳細介紹。核心功能解…

STM32——STM32CubeMX

總:STM32——學習總綱 一、簡介 注意,非邏輯代碼。 可兼容不同系列的STM32Cube固件包。 STM32Cube前置知識鏈接: STM32——HAL庫 不可過多依賴,此工具只針對STM32芯片,類似英飛凌芯片無法配置。主要用于參考。 二、安…

Java NIO 核心原理與秋招高頻面試題解析

一、NIO 概述Java NIO(New I/O 或 Non-blocking I/O)是 Java 1.4 引入的一套全新 I/O API,位于 java.nio 包下。NIO 提供了與傳統 BIO(Blocking I/O)完全不同的 I/O 處理方式,通過非阻塞模式、緩沖區&#…

vue3+element-plus,el-popover實現篩選彈窗的方法

實現一個篩選框,點擊篩選按鈕出現彈窗,彈窗內有選擇框/輸入框/單選框等等,底部有重置/確定兩個按鈕。需求:點擊篩選外部其他位置可以關閉彈窗,關閉彈窗后已編輯的數據不保存,點擊確定按鈕關閉彈窗&#xff…

python每日一題 貪心算法練習

在一條環路上有 n 個加油站,其中第 i 個加油站有汽油 gas[i] 升。你有一輛油箱容量無限的的汽車,從第 i 個加油站開往第 i1 個加油站需要消耗汽油 cost[i] 升。你從其中的一個加油站出發,開始時油箱為空。給定兩個整數數組 gas 和 cost &…

Python + Pika RabbitMQ集群壓測完整方案

一、最近搭建了個rabbitmq集群 三個磁盤節點,上生產環境之前想做個壓測,測試下穩定性,參考Deepseek做了如下測試方案二、核心代碼實現: 配置文件 (config.py) import os RABBITMQ_NODES [amqp://admin:123456192.168.0.175:8101,…

【第7話:相機模型3】自動駕駛IPM圖像投影拼接技術詳解及代碼示例

IPM圖像投影拼接技術詳解 IPM(逆透視映射)圖像投影拼接技術是一種在計算機視覺中廣泛應用的圖像處理方法,主要用于將多個透視視圖的圖像轉換為鳥瞰視圖并拼接成一個無縫的大場景圖像。該技術特別適用于自動駕駛、機器人導航和監控系統等領域&…

【測試工程思考】測試自動化基礎能力建設

1 回顧 傳統軟件研發體系下定義的軟件測試是從用戶視角設計的。測試是試圖窮盡用戶行為的工程,從測試用例(use case)的英文定義就可見一般。測試的邏輯資產就是用自然語言去描述用戶的操作行為或路徑。 但隨著軟件工程向分布式架構和敏捷交付…

進階向:AI聊天機器人(NLP+DeepSeek API)

什么是AI聊天機器人? AI聊天機器人是一種通過自然語言處理(NLP)技術模擬人類對話的智能程序系統。其核心是建立在機器學習算法和大型語言模型基礎上的對話引擎,能夠理解用戶的自然語言輸入,分析語境和意圖,并生成符合上下文的相關回復。 這類機器人系統通常包含以下幾個…

一個C#的段子

猜猜按鈕的結果是啥。 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } public static bool flag true; privat…

使用 gptqmodel 量化 Qwen3-Coder-30B-A3B-Instruct

代碼部分 : quantize_qwen3_coder_30b_a3b_instruct_gptq.py import os########## 環境變量設置 ########## # 當前可用的 CUDA 編號 os.environ["CUDA_VISIBLE_DEVICES"] "1" # GPU 顯存資源片段優化 os.environ["PYTORCH_CUDA_ALLOC_CONF"] …

基于python、django的疫苗接種管理系統

基于python、django的疫苗接種管理系統

Go語言實戰案例:使用sync.Map構建線程安全map

在并發編程中,共享資源的訪問是一個繞不開的問題。Go 中的 map 在并發讀寫時是不安全的,直接使用可能導致程序 panic。因此,在多協程同時訪問 Map 的場景下,必須采取有效的同步措施。本篇將通過一個實戰案例,介紹 Go 的…

關于vue2中對接海康攝像頭以及直播流rtsp或rtmp,后臺ffmpeg轉碼后通過ws實現

最近項目中需要對接攝像頭監控,海康攝像頭為rtsp流格式有一個軟件VLC media player,可以在線進行rtsp或者rtmp流播放,可用來測試流地址是否可用功能實現思路為后臺通過fmpeg把rtsp流進行轉碼,然后通過ws方式進行一幀一幀推送。&am…

Docker容器強制刪除及文件系統修復完整指南

Docker容器強制刪除及文件系統修復完整指南 故障現象與原因分析 ?故障表現?: ERROR: for c9ca40be974d_OpIsosMD_OB unable to remove filesystem unlinkat /data/docker/storage/containers/c9ca40be974d...: structure needs cleaning?根本原因?:…

Matplotlib 知識點總結

1. 基礎繪圖(plot函數)基本語法:plot([x], y, [fmt], [x2], y2, [fmt2], ..., **kwargs)功能特點:可繪制點、線和組合圖形自動生成x軸(0-N-1)當x未指定時示例:繪制兩點連線、多點不規則線等代碼…

高可用微服務架構實戰:Nacos集群+Nginx負載均衡,Spring Cloud無縫對接

"當你的注冊中心掛了,整個微服務就變成了無頭蒼蠅。" 這是我在生產環境踩坑后最痛的領悟。今天,我將分享如何用Nacos集群Nginx搭建堅如磐石的注冊中心,讓你的微服務永不迷路! 在 Windows 環境下配置 Nacos 集群&#x…

Spark大數據處理實戰指南

Spark 簡介 Apache Spark 是一個開源的分布式計算框架,專為大規模數據處理而設計。它通過內存計算和優化的執行引擎顯著提升了數據處理速度,適用于批處理、實時流處理、機器學習和圖計算等場景。 核心特性 高性能:利用內存計算(In-Memory Processing)減少磁盤 I/O,比傳…