Python網絡爬蟲編程新手篇

網絡爬蟲是一種自動抓取互聯網信息的腳本程序,廣泛應用于搜索引擎、數據分析和內容聚合。這次我將帶大家使用Python快速構建一個基礎爬蟲,為什么使用python做爬蟲?主要就是支持的庫很多,而且同類型查詢文檔多,在同等情況下,使用python做爬蟲,成本、時間、效率等總體各方便綜合最優的選擇。廢話不多說直接開干。

在這里插入圖片描述

環境準備
pip install requests beautifulsoup4  # 安裝核心庫
基礎爬蟲四步法
1. 發送HTTP請求
import requestsurl = "https://example.com"
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
}response = requests.get(url, headers=headers)
print(f"狀態碼: {response.status_code}")  # 200表示成功
2. 解析HTML內容
from bs4 import BeautifulSoupsoup = BeautifulSoup(response.text, 'html.parser')# 提取標題
title = soup.title.text
print(f"頁面標題: {title}")# 提取所有鏈接
links = [a['href'] for a in soup.find_all('a', href=True)]
print(f"發現{len(links)}個鏈接")
3. 數據存儲
# 存儲到CSV文件
import csvwith open('data.csv', 'w', newline='', encoding='utf-8') as f:writer = csv.writer(f)writer.writerow(['標題', '鏈接'])for link in links:writer.writerow([title, link])
4. 處理分頁
base_url = "https://example.com/page/{}"
for page in range(1, 6):  # 爬取5頁page_url = base_url.format(page)response = requests.get(page_url)# 解析和存儲邏輯...
高級技巧
1. 處理動態內容(使用Selenium)
from selenium import webdriverdriver = webdriver.Chrome()
driver.get("https://dynamic-site.com")
dynamic_content = driver.page_source
# 后續解析過程相同
driver.quit()
2. 避免被封禁
import time
import random# 隨機延遲(1-3秒)
time.sleep(random.uniform(1, 3))# 使用代理IP
proxies = {"http": "http://10.10.1.10:3128"}
requests.get(url, proxies=proxies)
3. 遵守robots.txt
from urllib.robotparser import RobotFileParserrp = RobotFileParser()
rp.set_url("https://example.com/robots.txt")
rp.read()
if rp.can_fetch("*", url):# 允許爬取
完整示例:爬取圖書信息
import requests
from bs4 import BeautifulSoupurl = "http://books.toscrape.com/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')books = []
for book in soup.select('article.product_pod'):title = book.h3.a['title']price = book.select_one('p.price_color').textbooks.append((title, price))print(f"抓取到{len(books)}本書籍")
for title, price in books[:3]:print(f"- {title}: {price}")
重要提醒

1、法律合規:遵守網站robots.txt協議,不爬取敏感數據

2、頻率控制:添加延遲避免對服務器造成壓力

3、異常處理:添加try-except應對網絡錯誤

try:response = requests.get(url, timeout=5)
except requests.exceptions.RequestException as e:print(f"請求失敗: {e}")

4、User-Agent輪換:使用不同瀏覽器標

通過上面這個教程,想必大家已經掌握了爬蟲的基本原理和實現方法。實際開發中可根據需求添加數據庫存儲、異步處理等高級功能,當然這個是后續學習的范疇,也是更高要求爬蟲項目必會的環節。

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

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

相關文章

LeetCode.283移動零

題目鏈接:283. 移動零 - 力扣(LeetCode) 題目描述: 給定一個數組 nums,編寫一個函數將所有 0 移動到數組的末尾,同時保持非零元素的相對順序。 請注意 ,必須在不復制數組的情況下原地對數組進行…

2025年7月4日漏洞文字版表述一句話版本(漏洞危害以及修復建議),通常用于漏洞通報中簡潔干練【持續更新中】,漏洞通報中對于各類漏洞及修復指南

漏洞及修復指南 一、暗鏈 危害:攻擊者通過技術手段在用戶網頁中插入隱藏鏈接或代碼,并指向惡意網站,可導致用戶信息泄露、系統感染病毒,用戶訪問被劫持至惡意網站,泄露隱私或感染惡意軟件,被黑客利用進行…

python --飛漿離線ocr使用/paddleocr

依賴 # python3.7.3 paddleocr2.7.0.2 paddlepaddle2.5.2 loguru0.7.3from paddleocr import PaddleOCR import cv2 import numpy as npif __name__ __main__:OCR PaddleOCR(use_doc_orientation_classifyFalse, # 檢測文檔方向use_doc_unwarpingFalse, # 矯正扭曲文檔use…

數據結構與算法:貪心(三)

前言 感覺開始打cf了以后貪心的能力有了明顯的提升,讓我們謝謝cf的感覺場。 一、跳躍游戲 II class Solution { public:int jump(vector<int>& nums) {int n=nums.size();//怎么感覺這個題也在洛谷上刷過(?)int cur=0;//當前步最遠位置int next=0;//多跳一步最遠…

【Redis篇】數據庫架構演進中Redis緩存的技術必然性—高并發場景下穿透、擊穿、雪崩的體系化解決方案

&#x1f4ab;《博主主頁》&#xff1a;    &#x1f50e; CSDN主頁__奈斯DB    &#x1f50e; IF Club社區主頁__奈斯、 &#x1f525;《擅長領域》&#xff1a;擅長阿里云AnalyticDB for MySQL(分布式數據倉庫)、Oracle、MySQL、Linux、prometheus監控&#xff1b;并對…

Docker 實踐與應用案例

引言 在當今的軟件開發和部署領域&#xff0c;高效、可移植且一致的環境搭建與應用部署是至關重要的。Docker 作為一款輕量級的容器化技術&#xff0c;為解決這些問題提供了卓越的方案。Docker 通過容器化的方式&#xff0c;將應用及其依賴項打包成一個獨立的容器&#xff0c;…

《論三生原理》以非共識路徑實現技術代際躍遷??

AI輔助創作&#xff1a; 《論三生原理》以顛覆傳統數學范式的非共識路徑驅動多重技術代際躍遷&#xff0c;其突破性實踐與爭議并存&#xff0c;核心論證如下&#xff1a; 一、技術代際躍遷的實證突破? ?芯片架構革新? 為華為三進制邏輯門芯片提供理論支撐&#xff0c;通過對…

一體機電腦為何熱度持續上升?消費者更看重哪些功能?

一體機電腦&#xff08;AIO&#xff0c;All-in-One&#xff09;將主機硬件與顯示器集成于單一機身。通常僅需連接電源線&#xff0c;配備無線鍵盤、鼠標即可啟用。相比傳統臺式電腦和筆記本電腦&#xff0c;選購一體機的客戶更看重一體機的以下特點。 一體機憑借其節省空間、簡…

無人機載重模塊技術要點分析

一、技術要點 1. 結構設計創新 雙電機卷揚系統&#xff1a;采用主電機&#xff08;張力控制&#xff09;和副電機&#xff08;卷揚控制&#xff09;協同工作&#xff0c;解決繩索纏繞問題&#xff0c;支持30米繩長1.2m/s高速收放&#xff0c;重載穩定性提升。 軸雙槳布局…

【大模型推理】工作負載的彈性伸縮

基于Knative的LLM推理場景彈性伸縮方案 1.QPS 不是一個好的 pod autoscaling indicator 在LLM推理中&#xff0c; 為什么 2. concurrency適用于單次請求資源消耗大且處理時間長的業務&#xff0c;而rps則適合較短處理時間的業務。 3.“反向彈性伸縮”的概念 4。 區分兩種不同的…

STM32F103_Bootloader程序開發12 - IAP升級全流程

導言 本教程使用正點原子戰艦板開發。 《STM32F103_Bootloader程序開發11 - 實現 App 安全跳轉至 Bootloader》上一章節實現App跳轉bootloader&#xff0c;接著&#xff0c;跳轉到bootloader后&#xff0c;下位機要發送報文‘C’給IAP上位機&#xff0c;表示我準備好接收固件數…

AI驅動的未來軟件工程范式

引言&#xff1a;邁向智能驅動的軟件工程新范式 本文是一份關于構建和實施“AI驅動的全生命周期軟件工程范式”的簡要集成指南。它旨在提供一個獨立、完整、具體的框架&#xff0c;指導組織如何將AI智能體深度融合到軟件開發的每一個環節&#xff0c;實現從概念到運維的智能化…

Hawk Insight|美國6月非農數據點評:情況遠沒有看上去那么好

7月3日&#xff0c;美國近期最重要的勞動力數據——6月非農數據公布。在ADP遇冷之后&#xff0c;市場對這份報告格外期待。 根據美國勞工統計局公布報告&#xff0c;美國6月非農就業人口增加 14.7萬人&#xff0c;預期 10.6萬人&#xff0c;4月和5月非農就業人數合計上修1.6萬人…

Python 的內置函數 reversed

Python 內建函數列表 > Python 的內置函數 reversed Python 的內置函數 reversed() 是一個用于序列反轉的高效工具函數&#xff0c;它返回一個反向迭代器對象。以下是關于該函數的詳細說明&#xff1a; 基本用法 語法&#xff1a;reversed(seq)參數&#xff1a;seq 可以是…

溝通-交流-說話-gt-jl-sh-goutong-jiaoliu-shuohua

溝通,先看|問狀態(情緒) 老婆下班回家,我說,到哪兒了,買點玉米哦;她說你為啥不買, 我說怎么如此大火氣, 她說你安排我&#xff0c;我不情愿;你怎么看 和女人溝通不能目標優先 先問狀態并表達關心 用感謝代替要求&#xff08;“你上次買的玉米特別甜&#xff0c;今天突然又饞了…

Ubuntu20.04運DS-5

準備工作&#xff1a; cd /home/rlk/rlk/runninglinuxkernel_5.0 #make clean mkdir _install_arm64/dev sudo mknod _install_arm64/dev/console c 5 1 ./build_ds5_arm64.sh git checkout boot-wrapper-aarch64/fvp-base-gicv3-psci.dtb ./build_ds5_arm64.sh創建工程步驟2.5…

區塊鏈網絡P2P通信原理

目錄 區塊鏈網絡P2P通信原理引言:去中心化的網絡基石1. P2P網絡基礎架構1.1 區塊鏈網絡拓撲1.2 節點類型對比2. 節點發現與連接2.1 初始引導過程2.2 節點發現協議3. 網絡通信協議3.1 消息結構3.2 核心消息類型4. 數據傳播機制4.1 交易傳播流程4.2 Gossip協議實現4.3 區塊傳播優…

RNN和Transformer區別

RNN&#xff08;循環神經網絡&#xff09;和 Transformer 是兩種廣泛應用于自然語言處理&#xff08;NLP&#xff09;和其他序列任務的深度學習架構。它們在設計理念、性能特點和應用場景上存在顯著區別。以下是它們的詳細對比&#xff1a;1. 基本架構RNN&#xff08;循環神經網…

[學習記錄]Unity-Shader-幾何著色器

幾何著色器是可編程渲染管線中的一個可選階段&#xff0c;位于頂點著色器之后和片段著色器之前。其核心能力在于動態生成和操作幾何體圖元。 一.圖元 了解圖元是理解幾何著色器的基礎和前提&#xff0c;因為幾何著色器的工作就是接收圖元&#xff0c;然后輸出圖元。 幾何著色…

Paimon 布隆過濾器索引

布隆過濾器原理布隆過濾器的最優參數推導是其理論核心&#xff0c;理解了這個過程&#xff0c;就能明白 BloomFilter64 構造函數里計算公式的由來了。下面我們一步步來推導。首先&#xff0c;我們定義幾個關鍵變量&#xff1a;n: 預估要插入的元素數量 (對應代碼中的 items)。m…