Python 爬蟲案例

以下是一些常見的 Python 爬蟲案例,涵蓋了不同的應用場景和技術點:
1. 簡單網頁內容爬取
案例:爬取網頁標題和簡介
import requests
from bs4 import BeautifulSoup

url = "https://www.runoob.com/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

title = soup.title.string
description = soup.find('meta', attrs={'name': 'description'})['content']
print(f"標題: {title}")
print(f"簡介: {description}")

2. 爬取圖片
案例:爬取圖片網站并下載圖片
import os
import requests
from bs4 import BeautifulSoup

url = "https://unsplash.com/s/photos/nature"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

# 創建文件夾存儲圖片
if not os.path.exists('images'):
? ? os.makedirs('images')

# 找到所有圖片標簽
img_tags = soup.find_all('img')
for idx, img in enumerate(img_tags):
? ? img_url = img['src']
? ? # 下載圖片
? ? img_data = requests.get(img_url).content
? ? with open(f'images/img_{idx}.jpg', 'wb') as handler:
? ? ? ? handler.write(img_data)

3. 爬取數據并存儲
案例:爬取豆瓣電影 Top250 并存儲到 CSV
import csv
import requests
from bs4 import BeautifulSoup

url = "https://movie.douban.com/top250"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'html.parser')

movies = []
for item in soup.select('.item'):
? ? title = item.select('.title')[0].get_text()
? ? rating = item.select('.rating_num')[0].get_text()
? ? director = item.select('.bd p')[0].get_text().split('\n')[1].strip().split('/')[0]
? ? movies.append([title, rating, director])

# 寫入 CSV 文件
with open('douban_top250.csv', 'w', newline='', encoding='utf-8') as f:
? ? writer = csv.writer(f)
? ? writer.writerow(['標題', '評分', '導演'])
? ? writer.writerows(movies)

4. 動態網頁爬取
案例:使用 Selenium 爬取動態加載的網頁
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time

# 啟動瀏覽器
driver = webdriver.Chrome()
driver.get("https://www.jd.com")

# 搜索商品
search_box = driver.find_element(By.ID, 'key')
search_box.send_keys('筆記本電腦')
search_box.send_keys(Keys.RETURN)
time.sleep(3) ?# 等待頁面加載

# 獲取商品列表
products = driver.find_elements(By.CLASS_NAME, 'gl-item')
for product in products:
? ? try:
? ? ? ? name = product.find_element(By.CLASS_NAME, 'p-name').text
? ? ? ? price = product.find_element(By.CLASS_NAME, 'p-price').text
? ? ? ? print(f"商品: {name}, 價格: {price}")
? ? except Exception as e:
? ? ? ? print(e)

driver.quit()

5. API 數據爬取
案例:爬取 GitHub API 數據
import requests

# 獲取 Python 倉庫信息
url = "https://api.github.com/search/repositories?q=language:python&sort=stars"
response = requests.get(url)
data = response.json()

for item in data['items']:
? ? name = item['name']
? ? description = item['description']
? ? stars = item['stargazers_count']
? ? print(f"倉庫: {name}, 描述: {description}, 星數: {stars}")

6. 爬取登錄后的數據
案例:模擬登錄并爬取數據
import requests

login_url = "https://example.com/login"
data_url = "https://example.com/dashboard"

# 登錄信息
payload = {
? ? 'username': 'your_username',
? ? 'password': 'your_password'
}

# 使用會話保持登錄狀態
with requests.Session() as session:
? ? # 發送登錄請求
? ? session.post(login_url, data=payload)
? ??
? ? # 訪問需要登錄的頁面
? ? response = session.get(data_url)
? ? print(response.text)

注意事項
1. ?遵守網站規則:在爬取之前,查看目標網站的 robots.txt 文件,了解哪些頁面允許爬取。
2. ?設置合理的請求間隔:避免頻繁請求導致服務器壓力過大或被封禁。
3. ?處理反爬機制:如果遇到反爬,可以嘗試使用代理 IP、設置請求頭(User-Agent)等方法。
4. ?合法性:確保爬取的數據和行為符合法律法規。
這些案例可以幫助你快速上手 Python 爬蟲開發,根據實際需求選擇合適的技術和工具。

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

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

相關文章

【C++進階】函數:深度解析 C++ 函數的 12 大進化特性

目錄 一、函數基礎 1.1 函數定義與聲明 1.2 函數調用 1.3 引用參數 二、函數重載:同名函數的「多態魔法」(C 特有) 2.1 基礎實現 2.2 重載決議流程圖 2.3 與 C 語言的本質區別 2.4 實戰陷阱 三、默認參數:接口的「彈性設…

Redis的基礎,經典,高級問題解答篇

目錄 一,基礎 二,經典 緩存雪崩: 1. Redis事務的原子性 2. 與MySQL事務的區別 1. 主從復制原理 2. 哨兵模式故障轉移流程 3. 客戶端感知故障轉移 三,高級 一,基礎 Redis的5種基礎數據類型及使用場景&#xf…

【藍橋杯】好數

好數 問題描述代碼解釋代碼 好數 問題描述 一個整數如果按從低位到高位的順序,奇數位 (個位、百位、萬位 ? ) 上的數字是奇數,偶數位 (十位、千位、十萬位 ? ) 上的數字是偶數,我們就稱之為 “好數”。 給定一個正整數 N,請計算…

利用 Patroni + etcd + HAProxy 搭建高可用 PostgreSQL 集群

在生產環境中,數據庫的高可用性是系統穩定運行的關鍵。本文將詳細講解如何利用 Docker 部署一個由 etcd、Patroni 和 HAProxy 組成的 PostgreSQL 高可用集群,實現自動故障轉移和負載均衡。 架構概述 本架構主要包括三部分: etcd 集群 etcd …

bash 和 pip 是兩種完全不同用途的命令,分別用于[系統終端操作]和[Python 包管理]

bash 和 pip 是兩種完全不同用途的命令,分別用于 系統終端操作 和 Python 包管理。以下是它們的核心區別、用法及常見場景對比: 1. 本質區別 特性bashpip類型Shell 命令解釋器(一種腳本語言)Python 包管理工具作用執行系統命令、…

分布式系統的CAP理論、事務和鎖實現

分布式系統核心概念 1. CAP理論 CAP理論指出,分布式系統最多同時滿足以下三項中的兩項: 一致性(CC):所有節點訪問同一份最新數據。可用性(AA):每個請求都能在合理時間內獲得非錯誤…

鴻蒙UI開發

鴻蒙UI開發 本文旨在分享一些鴻蒙UI布局開發上的一些建議,特別是對屏幕寬高比發生變化時的應對思路和好的實踐。 折疊屏適配 一般情況(自適應布局/響應式布局) 1.自適應布局 1.1自適應拉伸 左右組件定寬 TypeScript //左右定寬 Row() { …

FreeRTOS 五種內存管理算法深度對比分析

FreeRTOS 提供了五種動態內存管理算法(heap_1 至 heap_5),針對不同應用場景在實時性、內存效率、碎片控制等方面進行了差異化設計。以下從實現原理、性能指標及適用場景進行全面對比: 一、Heap_1:靜態分配優先 ?核心…

基于EFISH-SBC-RK3576的無人機智能飛控與數據存儲方案

一、方案背景 民用無人機在電力巡檢、農業植保、應急救援等領域快速普及,但傳統方案面臨?多協議設備兼容性差?、?野外環境數據易丟失?、?復雜電磁干擾?三大痛點。 電魚智能推出?EFISH-SBC-RK3576?,可集成雙冗余總線接口與工業級加固存儲&#x…

怎樣進行服務器的日常安全監控和審計?

服務器的日常安全監控和審計是保障服務器安全運行的重要措施,以下是一些常見的方法和工具: 系統日志監控 啟用日志功能:確保服務器操作系統、應用程序和數據庫等都啟用了詳細的日志記錄功能。例如,Linux 系統中的 syslog&#x…

數據庫----單表、多表

數據庫 create database 數據庫名稱;---創建數據庫create database 數據庫名稱 default charsetutf8mb4;---創建數據庫,同時指定編碼show databases;---查看當前數據庫管理下存在多少數據庫show databases like "db_%";---查詢以db_開頭的數據庫select d…

DeepSeek 助力 Vue3 開發:打造絲滑的表格(Table)之添加行拖拽排序功能示例6,TableView16_06 分頁表格拖拽排序

前言:哈嘍,大家好,今天給大家分享一篇文章!并提供具體代碼幫助大家深入理解,徹底掌握!創作不易,如果能幫助到大家或者給大家一些靈感和啟發,歡迎收藏關注哦 💕 目錄 Deep…

遺傳算法優化支持向量機分類是一種將遺傳算法與支持向量機相結合的方法

遺傳算法優化支持向量機分類是一種將遺傳算法與支持向量機相結合的方法,旨在提高支持向量機的分類性能。以下是其相關內容的詳細介紹: 支持向量機(SVM) 原理:SVM是一種基于統計學習理論的機器學習方法,其…

Python中的Requests庫

什么是Python中的Requests模塊? requests模塊是Python中廣泛使用的庫,用于簡化HTTP請求的發送和響應處理。無論是調用API、下載文件、處理復雜會話管理,requests都能提供很好的解決方案。 一、基礎使用方法 1.GET請求 GET請求用于獲取服務…

復習MySQL20250327

第一章 基本操作 一、管理數據庫 難點:創建數據庫 輸入cmd的MySQL安裝路徑C:\Program Files\MySQL\MySQL Server 8.0\bin 1.查看所有數據庫 show databases; 2.創建數據庫 create database hsusers default charset utf8 collate utf8_general_ci;create data…

谷歌推出Gemini實時AI視頻功能,開啟智能交互新體驗

3月24日,谷歌發言人亞歷克斯約瑟夫向媒體證實,谷歌已開始向 Gemini Live 推出新的人工智能功能。這些功能使 Gemini 能夠“看到”用戶的屏幕內容,或通過智能手機攝像頭獲取畫面,并實時回答與之相關的問題。這一創新標志著人工智能…

Windows 新型零日漏洞:遠程攻擊可竊取 NTLM 憑證,非官方補丁已上線

近日,安全研究人員披露了一個新型 Windows 零日漏洞,影響從Windows 7和Server 2008 R2到最新Windows 11 v24H2及Server 2025的所有Windows操作系統版本。攻擊者只需誘使用戶在Windows資源管理器中查看惡意文件,即可利用該零日漏洞竊取NTLM&am…

一款超級好用且開源免費的數據可視化工具——Superset

認識Superset 數字經濟、數字化轉型、大數據等等依舊是如今火熱的領域,數據工作有一個重要的環節就是數據可視化。 看得見的數據才更有價值! 現如今依舊有多數企業號稱有多少多少數據,然而如果這些數據只是呆在冷冰冰的數據庫或文件內則毫無…

作業14 (2023-05-22_const修飾指針)

第1題/共5題【單選題】 C程序常見的錯誤分類不包含:( ) A.編譯錯誤 B.鏈接錯誤 C.棧溢出 D.運行時錯誤 回答正確 答案解析: 棧溢出是運行時錯誤的一種,因此C程序不會將棧溢出錯誤單獨列出來,棧溢出包含在運行時錯誤中。 因此:選擇C 第2題/共5題【單選題】 以下關于…

《Tr0ll2 靶機滲透實戰:弱口令+SUID+兩種緩沖區溢出+ 提權完整+fcrackzip暴力破解+shellshock漏洞+臟牛三種root提權復盤》

Tr0ll2 1、主機發現 arp-scan -l 2、端口掃描 nmap -sS -sV 192.168.66.181 nmap -sS -A -T4 -p- 192.168.66.181 nmap --scriptvuln 192.168.66.181PORT STATE SERVICE VERSION 21/tcp open ftp vsftpd 2.0.8 or later 22/tcp open ssh OpenSSH 5.9p1 Debian 5ubuntu1.4 (…