爬蟲學習——下載文件和圖片、模擬登錄方式進行信息獲取

一、下載文件和圖片

Scrapy中有兩個類用于專門下載文件和圖片,FilesPipeline和ImagesPipeline,其本質就是一個專門的下載器,其使用的方式就是將文件或圖片的url傳給它(eg:item[“file_urls”])。使用之前需要在settings.py文件中對其進行聲明其導入路徑,并且置于其他ItemPipeline之前。

二、模擬用戶登錄

有許多網站帶有登錄功能,并且有的網站必須登錄了才能獲取信息,故可以利用Scrapy來模擬用戶登錄的行為,進而自動化獲取網頁信息。登錄實質是向服務器發送含有登錄表單數據的HTTP請求。在Scrapy中有一個繼承Request基類的FormRequest類,這個類可以幫助我們模擬用戶登錄的行為。其中最為簡單的方式是(將需要登錄的信息提前以發送請求的格式設定好,直接使用FormRequest的from_response方法就可以實現):

Fd={“number_phone”:******************,”password”:12334455}

Request=FormRequest.from_response(response,formdata=fd)

在實際應用中,一般將登錄和爬取內容進行分開實現,保證邏輯為登錄成功后,再爬取網頁內容。

除了登錄的網頁外,網頁中可能會出現識別驗證碼的情況,其設置的目的是為了防止爬蟲爬取,故要求用戶登錄輸入驗證碼。識別驗證碼的方法有很多,以下是常規的方法:

①OCR識別tesseract-ocr是基于OCR實現的一個驗證碼識別庫,再Python中可以通過第三方庫pytesseract進行調用。由于是第三方庫故需要對其進行安裝下載,,pip install tesseract-ocr,由于其依賴其他的圖像處理庫,故還需要安裝pip install pillow pytesseract

一般這種的識別率不是很高,多在70%~80%之間,且用于識別較為簡單的驗證碼,

②購買服務:對于復雜的驗證碼其識別較為困難,可以通過借助一些網站實現驗證碼識別服務(大概為1元錢識別100個驗證碼),并且這些平臺提供HTTP服務接口,用戶可以通過HTTP請求將驗證碼圖片發送給平臺,平臺識別后將結果通過HTTP響應返回。類似的這類平臺有阿里云市場上有很多這類服務的識別平臺。

③人工識別驗證碼:在Scrapy下載完驗證碼圖片后,調用image.show()方法將其顯示出來,然后調用Python內置函數input,將人工識別的結果進行輸入即可。

④利用瀏覽器的cookie:在使用瀏覽器登錄網站后,包含用戶身份信息的Cookie會被瀏覽器保存在本地,如果Scrapy爬蟲能直接使用瀏覽器中的Cookie發送?HTTP請求,就可以繞過提交表單登錄的過程。這個過程需要一直持續到人工登錄網站后進行爬取操作。如何獲取cookie,在python中直接進行pip install browsercookie即可進行導入并查看瀏覽器的cookie,使用方法:

Import browsercookie

Cookies=browsercookie.chrome()/firefox()即可

通過瀏覽器的cookie可以直接進行使用,將BrowserCookieMiddleware源碼將其復制到middlewares.py中,并在配置文件中添加如下信息即可,直接使用cookie登錄網站進行數據爬取。

USER_agent=”????”

DOWNLOADER_MIDDLEWARES={
?“scrapy.downloadermiddlewares.cookie.CookieMiddleware”:None,
?“browser_cookie.middlewares.BrowserCookieMiddleware”:701,
}

通過這種方式就可以直接利用一個偽裝好的用戶代理來實現利用cookie對直接進行網站登錄對其進行信息爬取。

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

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

相關文章

拒絕用電“盲人摸象”,體驗智能微斷的無縫升級

🌟 為什么需要智能微型斷路器? 傳統斷路器只能被動保護電路,而安科瑞智能微型斷路器不僅能實時監測用電數據,還能遠程控制、主動預警,堪稱用電安全的“全能衛士”!無論是家庭、工廠還是商業樓宇&#xff0…

如何優雅地為 Axios 配置失敗重試與最大嘗試次數

在 Vue 3 中,除了使用自定義的 useRequest 鉤子函數外,還可以通過 axios 的攔截器 或 axios-retry 插件實現接口請求失敗后的重試邏輯。以下是兩種具體方案的實現方式: 方案一:使用 axios 攔截器實現重試 實現步驟: 通…

【Leetcode刷題隨筆】242.有效的字母異位詞

1. 題目描述 給定兩個僅包含小寫字母的字符串 s 和 t ,編寫一個函數來判斷 t 是否是 s 的 字母異位詞。 字母異位詞定義:兩個字符串包含的字母種類和數量完全相同,但順序可以不同(例如 “listen” 和 “silent”)。 …

示例:spring xml+注解混合配置

以下是一個 Spring XML 注解的混合配置示例,結合了 XML 的基礎設施配置(如數據源、事務管理器)和注解的便捷性(如依賴注入、事務聲明)。所有業務層代碼通過注解簡化,但核心配置仍通過 XML 管理。 1. 項目結…

Crawl4AI:打破數據孤島,開啟大語言模型的實時智能新時代

當大語言模型遇見數據饑渴癥 在人工智能的競技場上,大語言模型(LLMs)正以驚人的速度進化,但其認知能力的躍升始終面臨一個根本性挑戰——如何持續獲取新鮮、結構化、高相關性的數據。傳統數據供給方式如同輸血式營養支持&#xff…

【機器學習-周總結】-第4周

以下是本周學習內容的整理總結,從技術學習、實戰應用到科研輔助技能三個方面歸納: 文章目錄 📘 一、技術學習模塊:TCN 基礎知識與結構理解🔹 博客1:【時序預測05】– TCN(Temporal Convolutiona…

Mysql--基礎知識點--79.1--雙主架構如何避免回環復制

1 避免回環過程 在MySQL雙主架構中,GTID(全局事務標識符)通過以下流程避免數據回環: 1 事務提交與GTID生成 在Master1節點,事務提交時生成一個全局唯一的GTID(如3E11FA47-71CA-11E1-9E33-C80AA9429562:2…

安寶特科技 | AR眼鏡在安保與安防領域的創新應用及前景

隨著科技的不斷進步,增強現實(AR)技術逐漸在多個領域展現出其獨特的優勢,尤其是在安保和安防方面。AR眼鏡憑借其先進的功能,在機場、車站、海關、港口、工廠、園區、消防局和警察局等行業中為安保人員提供了更為高效、…

Linux第十講:進程間通信IPC

Linux第十講:進程間通信IPC 1.進程間通信介紹1.1什么是進程間通信1.2為什么要進程間通信1.3怎么進行進程間通信 2.管道2.1理解管道2.2匿名管道的實現代碼2.3管道的五種特性2.3.1匿名管道,只能用來進行具有血緣關系的進程進行通信(通常是父子)2.3.2管道文…

微信小程序通過mqtt控制esp32

目錄 1.注冊巴法云 2.設備連接mqtt 3.微信小程序 備注 本文esp32用的是MicroPython固件,MQTT服務用的是巴法云。 本文參考巴法云官方教程:https://bemfa.blog.csdn.net/article/details/115282152 1.注冊巴法云 注冊登陸并新建一個topic&#xff…

SQLMesh隔離系統深度實踐指南:動態模式映射與跨環境計算復用

在數據安全與開發效率的雙重壓力下,SQLMesh通過動態模式映射、跨環境計算復用和元數據隔離機制三大核心技術,完美解決了生產與非生產環境的數據壁壘問題。本文提供從環境配置到生產部署的完整實施框架,助您構建安全、高效、可擴展的數據工程體…

Spring Data詳解:簡化數據訪問層的開發實踐

1. 什么是Spring Data? Spring Data 是Spring生態中用于簡化數據訪問層(DAO)開發的核心模塊,其目標是提供統一的編程模型,支持關系型數據庫(如MySQL)、NoSQL(如MongoDB)…

15 nginx 中默認的 proxy_buffering 導致基于 http 的流式響應存在 buffer, 以 4kb 一批次返回

前言 這也是最近碰到的一個問題 直連 流式 http 服務, 發現 流式響應正常, 0.1 秒接收到一個響應 但是 經過 nginx 代理一層之后, 就發現了 類似于緩沖的效果, 1秒接收到 10個響應 最終 調試 發現是 nginx 的 proxy_buffering 配置引起的 然后 更新 proxy_buffering 為…

源超長視頻生成模型:FramePack

FramePack 是一種下一幀(下一幀部分)預測神經網絡結構,可以逐步生成視頻。 FramePack 將輸入上下文壓縮為固定長度,使得生成工作量與視頻長度無關。即使在筆記本電腦的 GPU 上,FramePack 也能處理大量幀,甚…

第6次課 貪心算法 A

向日葵朝著太陽轉動,時刻追求自身成長的最大可能。 貪心策略在一輪輪的簡單選擇中,逐步導向最佳答案。 課堂學習 引入 貪心算法(英語:greedy algorithm),是用計算機來模擬一個「貪心」的人做出決策的過程…

Windows使用SonarQube時啟動腳本自動關閉

一、解決的問題 Windows使用SonarQube時啟動腳本自動關閉,并發生報錯: ERROR: Elasticsearch did not exit normally - check the logs at E:\Inori_Code\Year3\SE\sonarqube-25.2.0.102705\sonarqube-25.2.0.102705\logs\sonarqube.log ERROR: Elastic…

人機共跑,馬拉松人型機器人同跑

馬拉松比賽對人形機器人來說,是一場對硬件極限的測試,涉及機械、傳感器、能源管理等多個方面。用戶問的是硬件方面的考察和改進,這意味著我的回答需要聚焦于硬件性能,而不是算法或軟件的優化。 對人形機器人硬件的考研 機械結構與…

Ubuntu Linux 中文輸入法默認使用英文標點

先ubuntu從wayland切換到x11, sudo nano /etc/gdm3/custom.conf WaylandEnablefalse #取消注釋 sudo systemctl restart gdm3 #使設置生效然后安裝fcitx(是fcitx4版本)和 fcitx-googlepinyin, sudo apt install fcitx fcitx-googlepinyin 再sudo dpkg -i 安裝百度輸入法deb…

[論文閱讀]ConfusedPilot: Confused Deputy Risks in RAG-based LLMs

ConfusedPilot: Confused Deputy Risks in RAG-based LLMs [2408.04870] ConfusedPilot: Confused Deputy Risks in RAG-based LLMs DEFCON AI Village 2024 文章是針對Copilot這樣一個RAG服務提供平臺的攻擊 在企業環境中整合人工智能工具(如 RAG)會…

前端做模糊查詢(含AI版)

文章目錄 前言代碼實現AI個人 總結 前言 因為table需要編輯,所以如果從后端拿數據,編輯后篩選數據就會丟失。這時候就需要前端一次性拿到所有數據進行過濾,數據進行淺拷貝,以便過濾后的數據修改之后,同步修改總數居&a…