用 urllib 開啟爬蟲之門:從零掌握網頁數據抓取

在數字時代,數據就是力量。作為一名社會工作者,或許你想了解城市服務資源;作為一個編程初學者,你可能希望從網頁中自動提取新聞、課程或公開數據。今天,我們就來講一講 Python 標準庫中的一把“鑰匙”——urllib?庫,它能幫你打開網頁數據的大門。


一、什么是 urllib?

urllib?是 Python 內置的標準庫,不需要額外安裝。它可以幫助我們完成如下工作:

  • 發送 HTTP 請求(如 GET、POST)

  • 解析網頁 URL

  • 模擬瀏覽器訪問網站

  • 提交表單數據

  • 下載網頁或文件

相當于一套爬蟲工具箱,輕量、易學、直接,適合入門者使用。


二、urllib 的模塊組成

urllib?實際上是一個“包”,里面有幾個子模塊,各司其職:

子模塊

作用說明

urllib.request

用于發送請求、獲取網頁內容

urllib.parse

用于解析和拼接 URL 地址

urllib.error

用于處理異常和錯誤

urllib.robotparser

用于讀取 robots.txt(爬蟲協議)文件

三、實戰操作:一步步抓取網頁內容

1. 請求一個網頁并讀取內容

from urllib import requesturl =?"https://example.com"response = request.urlopen(url)html = response.read().decode("utf-8") ?# 解碼成字符串print(html)


? 說明:

  • urlopen()?會像瀏覽器一樣訪問網頁

  • read()?獲取的是字節數據,要用?.decode()?轉換成字符串

  • 默認是 GET 請求


2. 添加瀏覽器頭部(模擬正常訪問)

有的網站會檢測是不是“爬蟲”,我們可以加一個 User-Agent 來模擬瀏覽器:

from urllib import requesturl =?"https://example.com"headers = {"User-Agent":?"Mozilla/5.0"}req = request.Request(url, headers=headers)response = request.urlopen(req)print(response.read().decode("utf-8"))



3. POST 請求(提交表單數據)

from urllib import request, parseurl =?"https://httpbin.org/post"data = {"username":?"test","password":?"123456"}data = parse.urlencode(data).encode("utf-8") ?# 編碼成 bytesreq = request.Request(url, data=data)req.add_header("User-Agent",?"Mozilla/5.0")response = request.urlopen(req)


print(response.read().decode("utf-8"))


4. 下載一個文件(如圖片或PDF)

from?urllib?import?request

img_url =?"https://www.example.com/image.jpg"
request.urlretrieve(img_url,?"downloaded.jpg")

print("下載完成!")


5. 解析 URL 和參數

from?urllib?import?parse

url =?"https://example.com/search?q=python&sort=desc"
result = parse.urlparse(url)

print(result.scheme) ??# https
print(result.netloc) ??# example.com
print(result.path) ? ??# /search
print(result.query) ? ?# q=python&sort=desc


四、應對爬蟲限制

雖然 urllib 簡單易用,但功能相對基礎。許多網站會設置反爬機制,例如:

  • 驗證 User-Agent

  • 限速(頻繁請求會被封)

  • 需要登錄才能訪問

對于這些高級功能,可以搭配使用?time.sleep()(加延遲),或者使用更強大的庫如?requestsselenium?等。


五、結語:數據不難,只要你敢動手

urllib?是 Python 網絡爬蟲的入門首選。它雖然不像?requests?那樣靈活優雅,但勝在“標準、輕量、易懂”。對剛接觸爬蟲的社會工作者、老師、學生來說,完全夠用。你只需掌握基本結構,便能自主從網頁中抓取你需要的資源數據。

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

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

相關文章

Spring Boot 訂單超時自動取消的 3 種主流實現方案

Spring Boot 訂單超時自動取消的 3 種主流實現方案關鍵詞:Spring Boot、訂單超時、延遲任務、RabbitMQ、Redis、定時任務在電商、外賣、票務等業務中,“下單后若 30 分鐘未支付則自動取消”是一道經典需求。實現方式既要保證 實時性,又要在 高…

0401聚類-機器學習-人工智能

文章目錄一 無監督學習什么是無監督學習?核心特點:無監督學習的主要類型1. 聚類分析 (Clustering)2. 降維 (Dimensionality Reduction)3. 關聯規則學習 (Association Rule Learning)4. 異常檢測 (Anomaly Detection)5. 密度估計 (Density Estimation)二 …

基礎神經網絡模型搭建

nn 包提供通用深度學習網絡的模塊集合,接收輸入張量,計算輸出張量,并保存權重。通常使用兩種途徑搭建 PyTorch 中的模型:nn.Sequential和 nn.Module。 nn.Sequential通過線性層有序組合搭建模型;nn.Module通過__init__…

基于單片機出租車計價器設計

傳送門 👉👉👉👉其他作品題目速選一覽表 👉👉👉👉其他作品題目功能速覽 概述 本設計實現了一種基于單片機的智能化出租車計價系統。系統以單片機為核心處理器,集成…

134. Java 泛型 - 上限通配符

文章目錄134. Java 泛型 - 上限通配符 (? extends T)**1. 什么是上限通配符 (? extends T)?****2. 為什么使用 ? extends T?****3. 示例:使用 ? extends T 進行數據讀取****? 示例 1:計算數值列表的總和****4. 注意事項&…

【1】YOLOv13 AI大模型-可視化圖形用戶(GUI)界面系統開發

【文章內容適用于任意目標檢測任務】【GUI界面系統不局限于YOLOV13,主流YOLO系列模型同樣適用】本文以車輛行人檢測為背景,介紹基于【YOLOV13模型】和【AI大模型】的圖形用戶(GUI)界面系統的開發。助力大論文實現目標檢測模型的應…

小程序常用api

1. wx.request - 發起網絡請求 用于向服務器發送 HTTP 請求,獲取數據或提交表單。 // 示例:GET 請求獲取數據 wx.request({url: https://api.example.com/data, // 替換為實際 API 地址method: GET,success: (res) > {console.log(請求成功, res.da…

PaliGemma 2-輕量級開放式視覺語言模型

PaliGemma 2是輕量級開放式視覺語言模型 (VLM),靈感源自 PaLI-3,基于 SigLIP 視覺模型和 Gemma 語言模型等開放式組件。PaliGemma 同時接受圖片和文本作為輸入,并且可以回答有關圖片的詳細問題和背景信息。PaliGemma 2 提供 30 億、100 億和 …

騰訊云云服務器深度介紹

以下是圍繞騰訊云云服務器(CVM)的詳細介紹與推薦文章,結合其核心優勢、應用場景及技術特性,為不同用戶群體提供參考: 🚀 一、產品定位與核心價值 騰訊云云服務器(Cloud Virtual Machine, CVM&a…

Ceph OSD.419 故障分析

Ceph OSD.419 故障分析 1. 問題描述 在 Ceph 存儲集群中,OSD.419 無法正常啟動,系統日志顯示服務反復重啟失敗。 2. 初始狀態分析 觀察到 OSD.419 服務啟動失敗的系統狀態: systemctl status ceph-osd419 ● ceph-osd419.service - Ceph obje…

MySQL持久化原理及其常見問題

目錄 MySQL刷盤原理 臟頁和干凈頁 MySQL出現短暫的堵塞SQL現象 情況分析 應對措施 數據庫表中數據刪除原理 刪除表中數據數據庫空間大小不會改變 情況分析 應對措施 MySQL刷盤原理 一般主要分為兩個步驟 內存更新和 redo log 記錄是同一事務修改的兩個必要操作&#…

VSCode中Cline無法正確讀取終端的問題解決

出現的問題是:Cline 無法正確讀取終端輸出。 Shell Integration Unavailable Cline won’t be able to view the command’s output. Please update VSCode (CMD/CTRL Shift P → “Update”) and make sure you’re using a supported shell: zsh, bash, fish, o…

scalelsd 筆記 線段識別 本地部署 模型架構

ant-research/scalelsd | DeepWiki https://arxiv.org/html/2506.09369?_immersive_translate_auto_translate1 https://gitee.com/njsgcs/scalelsd https://github.com/ant-research/scalelsd https://huggingface.co/cherubicxn/scalelsd 模型鏈接: https…

Python, C ++開發個體戶/個人品牌打造APP

個體戶/個人品牌打造APP開發方案(Python C)一、技術選型與分工1. Python- 核心場景:后端API開發、數據處理、內容管理、第三方服務集成(如社交媒體分享、支付接口)。- 優勢:開發效率高,豐富的庫…

SQLAlchemy 常見問題筆記

文章目錄SQLAlchemy Session對象如何操作數據庫SQLAlchemy非序列化對象如何返回1.問題分析2.解決方案方法1:使用 Pydantic 響應模型(推薦)方法2:手動轉換為字典(簡單快速)方法3:使用 SQLAlchemy…

Shell腳本-uniq工具

一、前言在 Linux/Unix 系統中,uniq 是一個非常實用的文本處理命令,用于對重復的行進行統計、去重和篩選。它通常與 sort 搭配使用,以實現高效的文本數據清洗與統計分析。無論是做日志分析、訪問頻率統計,還是編寫自動化腳本&…

氛圍編碼(Vice Coding)的工具選擇方式

一、前言 在寫作過程中,我受益于若干優秀的博客分享,它們給予我寶貴的啟發: 《5分鐘選對AI編輯器,每天節省2小時開發時間讓你早下班!》:https://mp.weixin.qq.com/s/f0Zm3uPTcNz30oxKwf1OQQ 二、AI編輯的…

[硬件電路-57]:根據電子元器件的受控程度,可以把電子元器件分為:不受控、半受控、完全受控三種大類

根據電子元器件的受控程度,可將其分為不受控、半受控、完全受控三大類。這種分類基于元器件的工作狀態是否需要外部信號(如電壓、電流、光、熱等)的主動調控,以及調控的精確性和靈活性。以下是具體分類及實例說明:一、…

基于Pytorch的人臉識別程序

人臉識別原理詳解人臉識別是模式識別和計算機視覺領域的重要研究方向,其目標是從圖像或視頻中識別出特定個體的身份。現代人臉識別技術主要基于深度學習方法,特別是卷積神經網絡 (CNN),下面從多個維度詳細解析其原理:1. 人臉識別的…

ubuntu 開啟ssh踩坑之旅

文章目錄確認當前用戶為普通用戶 or root命令使用ssh還是sshd服務名稱的由來apt update和apt upgrade的關系apt upgrade報錯:“E: 您在 /var/cache/apt/archives/ 上沒有足夠的可用空間”開啟ssh步驟錯誤排查查看日志修改sshd_config文件允許防火墻通過22端口確認當…