第一天學爬蟲

閱讀提示:我今天才開始嘗試爬蟲,寫的不好請見諒。

一、準備工具

  • requests庫:發送HTTP請求并獲取網頁內容。
  • BeautifulSoup庫:解析HTML頁面并提取數據。
  • pandas庫:保存抓取到的數據到CSV文件中。

二、爬取步驟

  • 發送請求: 對于目標網頁,使用requests.get()發送HTTP請求并獲取網頁的HTML內容。
  • 解析HTML: 使用BeautifulSoup解析網頁,并尋找包含信息的HTML元素。
  • 提取數據: 找到合適的HTML標簽和類名,提取信息。
  • 分頁爬取: 如果網站有分頁,可以在代碼中處理分頁邏輯,循環抓取每一頁的數據。
  • 保存數據: 使用pandas或內置的文件寫入功能,將抓取到的數據保存到CSV文件中。

三、爬蟲代碼

網頁

<div class="pic"><em>1</em><a href="https://movie.douban.com/subject/1292052/"><img width="100" alt="肖申克的救贖" src="https://img3.doubanio.com/view/photo/s_ratio_poster/public/p480747492.webp"></a></div>
<div class="bd">                        
<p>                            
導演: 弗蘭克·德拉邦特 Frank Darabont&nbsp;&nbsp;&nbsp;主演: 蒂姆·羅賓斯 Tim Robbins /...<br>                            
1994&nbsp;/&nbsp;美國&nbsp;/&nbsp;犯罪 劇情                        
</p><div>                            
<span class="rating5-t"></span>                            
<span class="rating_num" property="v:average">9.7</span>                            
<span property="v:best" content="10.0"></span>                            
<span>3148544人評價</span>                        
</div><p class="quote">                                
<span>希望讓人自由。</span>                            
</p>                    
</div>

?爬蟲代碼:(我這里只爬蟲了一部分)


from bs4 import BeautifulSoup
import requests
import pandas as pddef getFilm():try:# 添加請求頭headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'}# 獲取網頁內容res = requests.get("https://movie.douban.com/top250?start=0&filter=",  headers=headers, timeout=10)res.encoding = 'utf-8'  # 修正編碼設置# 解析網頁soup = BeautifulSoup(res.text, 'html.parser')# 獲取數據film_data=soup.find('div',class_='hd')if not film_data:print("未找到信息")print(res.status_code)  # 應該是200return Nonename=soup.find('span',class_='title').text.strip()score=soup.find('span',class_='rating_num').text.strip()word=soup.find('p',class_='quote')dictum=word.find('span').get_text()df=pd.DataFrame({'電影名':[name],'評分':[score],'寄語':dictum})return dfexcept Exception as e:print(f"發生錯誤: {e}")return Nonedef main():df= getFilm()  # 修正變量名if df is not None:print(df)  # 打印DataFrameelse:print("未能獲取數據")if __name__ == '__main__':main()

四、拓展(設置請求頭)

請求頭(HTTP Headers)是客戶端(如瀏覽器或爬蟲)在發送 HTTP 請求時,附帶的一組?鍵值對(Key-Value)信息,用于告訴服務器?你是誰、你想獲取什么、以及如何返回數據

請求頭字段示例值作用
User-AgentMozilla/5.0 (Windows NT 10.0; Win64; x64)告訴服務器你的瀏覽器或設備類型
Accepttext/html,application/xhtml+xml告訴服務器你希望接收的數據類型
Accept-Languagezh-CN,zh;q=0.9告訴服務器你希望返回的語言
Refererhttps://www.google.com/告訴服務器你從哪個頁面跳轉過來
Hostmovie.douban.com告訴服務器你要訪問的域名
Cookiesessionid=abc123用于身份驗證(如登錄狀態)
Connectionkeep-alive控制 TCP 連接是否保持
Accept-Encodinggzip, deflate告訴服務器你支持的壓縮方式


?

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

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

相關文章

網絡編程和計算機網絡五層模型的關系

計算機網絡的五層模型&#xff08;應用層、傳輸層、網絡層、鏈路層和物理層&#xff09;為網絡編程提供了基礎框架和通信機制。網絡編程就是在這些層次上實現應用程序之間的通信。 計算機網絡五層模型 &#xff08;1&#xff09;應用層&#xff1a; 作用&#xff1a;應用層是…

知識篇 | Oracle的 TEMP表空間管理和優化

Oracle臨時表空間&#xff08;TEMP&#xff09;是數據庫中用于存儲會話級臨時數據的核心組件&#xff0c;主要用于支持需要中間結果集的操作&#xff08;如排序、哈希連接&#xff09;。其數據在事務結束或會話終止后自動釋放&#xff0c;不持久化存儲。 核心特點&#xff1a;…

重學Java基礎篇—線程池參數優化指南

一、核心參數解析 線程池&#xff08;ThreadPoolExecutor&#xff09;的性能取決于以下關鍵參數&#xff1a; 參數說明corePoolSize核心線程數&#xff0c;即使空閑也不會被回收maximumPoolSize最大線程數&#xff0c;當隊列滿且核心線程忙時創建新線程workQueue任務隊列&…

記一次線上環境JAR沖突導致程序報錯org.springframework.web.util.NestedServletException

一、問題描述 有個文件導入功能&#xff0c;用到了Hutool 的加密解密功能&#xff0c;本地運行完全可以&#xff0c;但是線上報錯&#xff1a;“org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoClassDefFou…

怎么快速部署Sock5代理到ubuntu云服務器

使用 Dante (推薦) 1. 安裝 Dante bash Copy sudo apt update sudo apt install dante-server -y 2. 配置 Dante 編輯配置文件 /etc/danted.conf&#xff1a; bash Copy sudo nano /etc/danted.conf 替換為以下內容&#xff08;按需修改端口和認證&#xff09;&#…

華為OD機試2025A卷 - 游戲分組/王者榮耀(Java Python JS C++ C )

最新華為OD機試 真題目錄:點擊查看目錄 華為OD面試真題精選:點擊立即查看 題目描述 2020年題: 英雄聯盟是一款十分火熱的對戰類游戲。每一場對戰有10位玩家參與,分為兩組,每組5人。每位玩家都有一個戰斗力,代表著這位玩家的厲害程度。為了對戰盡可能精彩,我們需要…

OpenRAND可重復的隨機數生成庫

OpenRAND 是一個 C++ 庫,旨在通過提供強大且可復制的隨機數生成解決方案來促進可重復的科學研究。它是一個簡單的僅頭文件庫,性能可移植,統計穩健,并且易于集成到任何 HPC 計算項目中。 特征 跨平臺支持:OpenRAND 旨在跨各種平臺無縫工作,包括 CPU 和 GPU。其僅標題庫設計…

接口/UI自動化面試題

一、UI自動化 1.1、接口和UI自動化有多少用例&#xff1f; 回答策略&#xff1a;根據接口設定用例&#xff0c;100個接口&#xff0c;自動化case在1500-2000左右。結合自身的項目&#xff0c;回答覆蓋的主功能流程。 示例&#xff1a; 接口自動化的測試case一般需要根據接口數…

使用Docker部署RabbitMQ

第一步&#xff1a;安裝 RabbitMQ # 1. 拉取鏡像 docker pull rabbitmq:3.12.0-management# 2. 啟動容器&#xff08;開放端口 數據持久化&#xff09; docker run -d \--nameshare_rabbitmq \-p 5672:5672 \ # AMQP 協議端口-p 15672:15672 \ # 管理界面端口…

2.基于多線程的TCP服務器實現

目錄 1. 簡單分析之前的代碼 2. 多線程服務器設計 2.1 C11線程的基本使用 2.2 服務器主體邏輯 3. 錯誤處理的封裝 4. 完整的代碼實現 客戶端代碼&#xff08;client.cpp&#xff09; 服務器代碼&#xff08;server.cpp&#xff09; 5. 運行方式 在我們預想中&#xff…

Python Web 框架 Django、Flask 和 FastAPI 對比

在探索 Python Web 框架時&#xff0c;Django、Flask 和 FastAPI 無疑是最常被提及的名字。根據我們最新的 Python 開發者調查&#xff0c;這三大框架繼續穩坐后端 Web 開發的熱門寶座。它們均為開源項目&#xff0c;并且與 Python 的最新版本無縫兼容。然而&#xff0c;面對不…

SQL Server數據庫表刪除分區

在 SQL Server 中刪除分區并將表恢復到非分區狀態&#xff0c;需按以下步驟操作&#xff1a; 一、合并所有分區 1. 檢查現有分區結構 首先確認表的分區方案和分區函數&#xff1a; -- 查看分區方案 SELECT * FROM sys.partition_schemes;-- 查看分區函數 SELECT * FROM sys…

信息安全和病毒防護——安全協議關于SSL和TLS協議的補充說明

文章目錄 SSL與TLS的關系SSL與TLS的核心區別SSL/TLS的典型應用安全建議總結SSL與TLS的關系 SSL(Secure Sockets Layer,安全套接層)和TLS(Transport Layer Security,傳輸層安全)是同一技術體系的演進版本,而非完全獨立的協議。其發展歷程如下: SSL 1.0(1994):未公開…

[原創](Modern C++)現代C++的關鍵性概念: 多維數組的下標引用.

[作者] 常用網名: 豬頭三 出生日期: 1981.XX.XX 企鵝交流: 643439947 個人網站: 80x86匯編小站 編程生涯: 2001年~至今[共24年] 職業生涯: 22年 開發語言: C/C、80x86ASM、Object Pascal、Objective-C、C#、R、Python、PHP、Perl、 開發工具: Visual Studio、Delphi、XCode、C …

從零構建大語言模型全棧開發指南:第二部分:模型架構設計與實現-2.2.3實戰案例:在筆記本電腦上運行輕量級LLM

?? 點擊關注不迷路 ?? 點擊關注不迷路 ?? 點擊關注不迷路 文章大綱 實戰案例:在筆記本電腦上運行輕量級LLM2.2.3 模型架構設計與實現1. 環境與工具準備1.1 硬件要求1.2 軟件棧選擇2. 輕量級模型架構設計2.1 模型參數配置2.2 關鍵技術優化3. 實戰流程3.1 數據準備流程3.2…

工業軟件的破局與重構:從技術依賴到自主創新的未來路徑

工業軟件作為現代工業的“神經與大腦”&#xff0c;不僅是制造業數字化轉型的核心工具&#xff0c;更是國家工業競爭力的戰略制高點。近年來&#xff0c;中國工業軟件市場在政策驅動與技術迭代中迅猛發展&#xff0c;但核心技術受制于人的困境仍待突破。如何實現從“跟跑”到“…

歌曲緩存相關功能

1. 核心組件 MusicCacheManager (音樂緩存管理器) 單例模式&#xff1a;確保全局只有一個實例&#xff0c;方便管理。 private static var instance: MusicCacheManager?static func shared() -> MusicCacheManager {if instance nil {instance MusicCacheManager()}ret…

解決 Ubuntu/Debian 中 `apt-get` 報錯 “無法獲得鎖 /var/lib/dpkg/lock“

問題描述 在 Ubuntu/Debian 系統中運行 sudo apt-get install 或 sudo apt update 時&#xff0c;遇到以下錯誤&#xff1a; E: 無法獲得鎖 /var/lib/dpkg/lock - open (11: 資源暫時不可用) E: 無法鎖定管理目錄(/var/lib/dpkg/)&#xff0c;是否有其他進程正占用它&#…

阿里開源的免費數據集成工具——DataX

企業里真實的數據流轉是什么樣子的呢&#xff1f; 左側描述了一個企業真實的樣子&#xff0c;我們總是需要把數據從一個地方搬到另一個地方&#xff0c;最后就是搬來搬去搬成了一張張解不開的網。 右側則表達了使用DataX為中心實現數據的同步。 什么是DataX DataX是一個異構…

26考研——圖_圖的遍歷(6)

408答疑 文章目錄 三、圖的遍歷圖的遍歷概述圖的遍歷算法的重要性圖的遍歷與樹的遍歷的區別圖的遍歷過程中的注意事項避免重復訪問遍歷算法的分類遍歷結果的不唯一性 廣度優先搜索廣度優先搜索&#xff08;BFS&#xff09;概述BFS 的特點廣度優先遍歷的過程示例圖遍歷過程 BFS …