Urllib庫的使用

来源:https://www.cnblogs.com/jiyu-hlzy/archive/2019/11/01/11780041.html
-Advertisement-
Play Games

urllib urllib 是一個用來處理網路請求的python標準庫,它包含4個模塊 urllib.request 請求模塊,用於發起網路請求 request模塊主要負責構造和發起網路請求,併在其中添加Headers,Proxy等,利用它可以模擬瀏覽器的請求發起過程 發起網路請求 、添加Heade ...


  1. urllib庫
  2. urllib3庫
  3. 爬蟲一般流程

urllib

urllib 是一個用來處理網路請求的python標準庫,它包含4個模塊

 

urllib.request            請求模塊,用於發起網路請求

request模塊主要負責構造和發起網路請求,併在其中添加Headers,Proxy等,利用它可以模擬瀏覽器的請求發起過程

發起網路請求 、添加Headers 、操作cookie 、使用代理

 

1、urlopen方法          一個簡單發送網路請求的方法

url:字元串格式的url

data:預設會發送GET請求,當傳入data參數時,則會發起POST請求,data參數是位元組類型、者類文件對象或可迭代對象

timeout:設置超時(以秒為單位),如果請求超過設置時間,則拋出異常。timeout沒有指定則用系統預設設置,timeout只對,http,https以及ftp連接起作用

 

2、Request對象

利用urlopen可以發起最基本的請求,但這幾個簡單的參數不足以構建一個完整的請求,可以利用更強大的Request對象來構建更加完整的請求

2.1、請求頭添加        兩種方式,一種可以添加多個,為字典類型,一種可以添加一個,為元組類型

通過urllib發送的請求會有一個預設的Headers:“User-Agent”:“Python-urllib/3.*”,指明請求是由urllib發送的

所以遇到一些驗證User-Agent的網站時,需要我們自定義Headers把自己偽裝起來

2.2操作cookie        在爬蟲中,對cookie的處理非常重要 

cookiejar           查看cookie信息

2.3設置代理

 

3、Response對象

read()      獲取響應返回的數據,只能用一次             readline()  讀取一行 

info()       獲取響應頭信息 

geturl()    獲取訪問的url

getcode()     返回狀態碼 

 

 

urllib.parse               解析模塊,用於解析URL

url中只能包含ascii字元,在實際操作過程中,get請求通過url傳遞的參數中會有大量的特殊字元,例如漢字,那麼就需要進行url編碼

字元串參數:parse.quote() 編碼   parse.unquote() 解碼

在發送請求的時候,往往會需要傳遞很多的參數,如果用字元串方法去拼接會比較麻煩,parse.urlencode()方法用來拼接字典類型的url參數

字典參數:parse.urlencode() 編碼   parse.parse_qs() 解碼

 

 

urllib.error                異常處理模塊,用於處理request引起的異常

主要包含URLError和HTTPError

URLError:是error異常模塊的基類,由request模塊產生的異常都可以用這個類來處理

HTTPError:是URLError的子類,主要包含三個屬性:  Code:請求的狀態碼    reason:錯誤的原因    headers:響應的報頭

 

 

urllib.robotparse            用於解析robots.txt文件

主要負責處理爬蟲協議文件,robots.txt.的解析

robots.txt是一個協議,而不是一個命令

robots.txt是搜索引擎中訪問網站的時候要查看的第一個文件

robots.txt文件告訴蜘蛛程式在伺服器上什麼文件是可以被查看的

 

 

 

urllib3

發起請求:urllib3.PoolManager().request()

響應對象提供status, data,和header等屬性

 

JSON content

返回的json格式數據可以通過json模塊,loads()為字典數據類型

可以通過提供字典類型的參數fields來添加查詢參數

 load為字典後,可以查看通過url編碼過後傳輸的參數

 

Binary content

響應返回的數據都是位元組類型,對於大量的數據通過stream來處理更好

 

ProxyManager

進行http代理操作

 

添加請求頭Headers

 

提供字典類型的參數field來傳遞form表單數據

對於二進位的數據上傳,我們用指定body的方式,設置Content-Type的請求頭

 

 

 

爬蟲開發流程

找到目標數據  分析請求流程  構造http請求  提取清洗數據  數據持久化


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

-Advertisement-
Play Games
更多相關文章
  • 前言: 簡單的操作 1)可以通過審查元素的方法,來設置自己滿意的樣式。操作是F12。F12操作可以打開控制面板,具體的樣式可以直接在上面修改,然後把修改後的樣式保存下來。 2)保存後的樣式,複製到[ 管理 ] - [ 設置 ] - 頁面定製CSS代碼上面,然後[ 保存 ] 1、隱藏廣告 2、按鈕樣式 ...
  • 鏈棧的定義: 棧的鏈式存儲結構稱為鏈棧,它是運算受限的單鏈表, 插入和刪除操作僅限制在表頭位置上進行。棧頂指針就是鏈 表的頭指針 ...
  • 在博主認為,學習java的最佳學習方法莫過於視頻+博客+書籍+總結,前三者博主將淋漓盡致地揮毫於這篇博客文章中,至於總結在於個人,博主將為各位保駕護航,各位只管沖鴨!!!上天是公平的,只要不辜負時間,時間自然不會辜負你。 何謂學習?博主所理解的學習,它是一個過程,是一個不斷 累積 、不斷 沉澱 、不 ...
  • 一、作用域相關-2個 1、locals() 參數是空 返回當前位置作用域的所有變數,返回的是字典 當前位置:函數內,返回局部變數 當前位置:函數外,返回全局變數 2、globals() 參數是空 返回全局變數,返回的是字典二、迭代器-生成器相關--3個 1、range() 生成數字數據,例如:等差數 ...
  • 如何在Idea中編譯構建Spring Framework 5.x 1. 安裝配置Gradle 2. 下載源碼:git clone https://github.com/spring projects/spring framework.git 3. 按照工程下 文件的提示進行操作 markdown T ...
  • 上篇文章,我們已經安裝好 Nginx,並且配置好 Nginx 文件後,這個時候我就需要操作 Nginx 的命令行了,這篇文章主要講解 Nginx 命令行相關知識,並通過日常遇到的熱部署、切割日誌文件場景來熟悉 Nginx 命令行操作。 推薦閱讀: "Nginx 瞭解一下?" Nginx 命令行 1. ...
  • Local是什麼? 無論你接觸到的是threading.Local還是werkzeug.Local,它們都代表一種變數——每個線程自己的全局變數。 全局變數,一般位於進程的堆上。一個進程的所有線程都可以訪問同一個全局變數,因為它們共用著進程的地址空間,所以每一個線程都可以訪問,這也帶來了問題,如果多 ...
  • 2019-11-01-22:09:09 目錄 1.Collection集合的概念 2.Collection集合常用方法 3.Iterator迭代器 4.增強for 5.Collection常用工具類 Collection集合的概念 ●集合:集合是java中提供的一 種容器,可以用來存儲多個數據。 集 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...