Python爬蟲連載17-ItemPipeLine、中間件

来源:https://www.cnblogs.com/ruigege0000/archive/2020/03/26/12571702.html

一、ItemPipeLine 1.爬蟲提取出的數據存入item之後,item中保存的數據需要進一步處理,比如:清洗,去重,存儲等 2.pipeline需要process_item函數 (1)process_item​:spider提出來的item作為參數出入,同時傳入的還有spider;此方法是必須 ...


一、ItemPipeLine

1.爬蟲提取出的數據存入item之後,item中保存的數據需要進一步處理,比如:清洗,去重,存儲等

2.pipeline需要process_item函數

(1)process_item​:spider提出來的item作為參數出入,同時傳入的還有spider;此方法是必須要實現的​;必須返回一個item對象,被丟棄的item不會被之後的pipeline處理

(2)__init__:構造函數

進行一些必要的參數初始化

(3)open_spider(spider)

spider對象被開啟的時候調用

(4)close_spider(spider)

spider對象被關閉的時候調用

3.Spider

(1)對應的是文件夾spiders下的文件

(2)__init__:初始化爬蟲的名稱,start_urls列表

(3)start_requests:生成Requests對象嫁給Scrapy下載並返回response

(4)parse:根據返回的response解析出相應的item,item自動進入到pip​eline;如果需要,解析出url,url自動交給requests模塊,一直迴圈下去

(5)start_request​:此方法僅能被調用一次,讀取start_urls內容並啟動迴圈過程

(6)​name:設置爬蟲的名字

(7)start_urls:設置開始第一批爬取的url

(8)allow_​domains:spider允許爬取的功能變數名稱列表

(9)start_request(self):只被調用一次

(10)parse

(11)log:日誌記錄

二、中間件

1.定義:中間件是處於引擎和下載器中間的一層組件

2.作用:對發出的請求和返回的結果進行預處理

3.​數量:可以有很多個,被按順序載入執行

4​.位置:在middlewares文件中,需要在settings中設置以便生效

5.編寫十分簡單

6.必須實現以下一個或者多個方法

(1)process_request(self,request,spider)

在request通過的時候​被調用;必須返回None或者Request或Response或raise IgnoreRequest;

None:scrapy將繼續處理該request

Request:scrapy將停止調用process_request並沖洗調度返回的request

Response:scrapy將不會調用其他的process_request或者process_exception,直接將該response作為結果同時會調用process_response函數

(2)process_response(self,request,response,spider)

跟process_request大同小異;每次返回結果的時候會自動調用;可以有多個,​按順序調用。

三、源碼

2.CSDN:https://blog.csdn.net/weixin_44630050

3.博客園:https://www.cnblogs.com/ruigege0000/

4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料

 

 


您的分享是我們最大的動力!

更多相關文章
  • 這個不是無限級評論,只有兩層,實現起來比較簡單點,所有評論的parent_id都是對應的第一級評論的id,新增評論的時候,就在對應的評論下麵追加,並且用prepend()把最新評論放到最前面 資料庫設計(我這裡沒有真正用到資料庫,為了測試,用的都是寫死的假數據,所以後臺請求的介面只是返回了一個cod ...
  • 按照國際慣例先放效果圖 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale ...
  • 在 HTML 文檔中,標題很重要;HTML 標題可以用來呈現文檔結構,設置得當的標題有利於用戶瀏覽您的網頁。標題(Heading)是通過 <h1> - <h6> 標簽進行定義的.<h1>定義最大的標題,<h6> 定義最小的標題。 註釋: A.瀏覽器會自動地在標題的前後添加空行。B.預設情況下,HTM ...
  • HTML 屬性:屬性是為 HTML 元素提供的附加信息。 HTML 元素可以設置屬性 屬性可以在元素中添加附加信息 屬性一般描述於開始標簽 屬性總是以名稱/值對的形式出現,比如:name="value"。 e.g:<a href=https://www.cnblogs.com/dhnblog/">這 ...
  • 圖解Java設計模式之外觀模式 影院管理項目 傳統方式解決影院管理 傳統方式解決影院管理問題分析 外觀模式基本介紹 外觀模式原理類圖 外觀模式解決影院管理 外觀模式的註意事項和細節 影院管理項目 組建一個家庭影院 :DVD 播放器、投影儀、自動屏幕、環繞立體聲、爆米花機,要求完成使用家庭影院的功能, ...
  • 問題引入:電腦里安裝了從官網下載的python3.8.0,。先使用了菜鳥教程的方法2安裝。https://www.runoob.com/numpy/numpy-install.html 發現產生錯誤。先是提示我的pip工具沒有更新到最新版本,於是根據提示更新後,發現仍有錯誤,於是放棄使用這方法里的命 ...
  • 需求 基於Spring, SpringMVC, Mybatis 實現一個類似京東商城的3C電子商城系統, 能夠實現商品管理與展示, 加入購物車, 支付購買等功能 運行環境 jdk1.8,tomcat8.5,mysql5.6,EclispseEE 項目技術 spring springmvc, myba ...
  • 框架:具有很強的通用性,且封裝了一些通用實現方法的項目模板 (非同步框架): 高性能的網路請求 高性能的數據解析 高性能的持久化存儲 高性能的全站數據爬取 高性能的深度爬取 高性能的分散式 Scrapy環境安裝 IOS和Linux windows 安裝完成後,輸入 測試一下,出現如下圖顯示,即安裝成功 ...
一周排行
  • C#中的DefaultView方法 簡介: 首先可建立一個表,對錶進行填充若幹條數據,代碼如下: //創建Table1 DataTable dt = new DataTable(); //對Table1添加列名,並設置列值類型 DataTable dt1 = new DataTable();//創建 ...
  • 1、運行程式報錯: FailFast: Couldn't find a valid ICU package installed on the system. 解決方法: yum install icu -y 2、程式運行後,本地可以訪問,但其他機器無法訪問,需要開放埠 firewall-cmd - ...
  • 只是一個Demo,所用有很多功能也沒有添加進去如分頁,輸入驗證,頁面也沒有進行精心佈局。 整體先來幾張圖解 ...
  • Core提供二種開發模式:Core Pages和Core MVC,今天介紹的是Core MVC。 1、創建web MVC項目 新建service/h_r.baseservice類庫文件、data/h_r.efdata類庫文件、common/h_r.common類庫文件。 引入需要的CSS文件和JS文 ...
  • 學習網址:https://docs.microsoft.com/zh-cn/visualstudio/get-started/visual-studio-ide?view=vs-2019 示範 vs2019: 變數的重命名的重構,更改該變數命名的同時,引用該變數的地方也會更改,如果該變數有被反射用到 ...
  • 1、在data裡面新建個Entity文件用於存放表映射,設計資料庫,執行如下語句 Scaffold-DbContext -Force "server=.;user=sunyong;password=1qaz!QAZ;database=hr;" Microsoft.EntityFrameworkCor ...
  • 1、發送郵件類,百度一大堆,這裡用的也是直接百度拿過來的 public static bool get_send_email(email email, string Title, string Body) { MailMessage mailMsg = new MailMessage(); mail ...
  • 1、添加用戶列表控制器,用於用戶列表顯示,登錄,增刪改查,郵件發送,下載 public userlistController(MainDbContext _db, ILogger<operatorlog> _logger, IOptions<email> sendMail) { db = _db; ...
  • 1、用戶列表頁面 @{ Layout = Layout = null;}<table id="datalistuser" class="easyui-datagrid" url="/userlist/getuserlist" toolbar="#toolbaruser" rownumbers="tr ...
  • 1、引用包 Microsoft.EntityFrameworkCore.Tools Microsoft.EntityFrameworkCore.SqlServer Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation Microsoft.AspNetCo ...