網絡爬蟲(python)入門

一、網絡爬蟲介紹

網絡爬蟲(Web Crawler)是一種自動抓取互聯網信息的程序,它能夠高效地從海量網頁中提取有價值的數據。作為數據采集的利器,爬蟲技術在數據分析、搜索引擎、價格監控等領域有著廣泛應用。本文將帶你全面了解Python網絡爬蟲的開發。

robots.txt規則

robots.txt 是網站與網絡爬蟲溝通的標準協議文件,它規定了哪些內容可以被爬取,哪些應該被禁止。作為爬蟲開發者,理解并遵守 robots.txt 規則是合法合規爬取的基礎。

通過在網站后加上robots.txt就可以查看當前網站的robots規則

完全開放

User-agent: * Disallow:

完全禁止

User-agent: * Disallow: /

部分限制

User-agent: * Disallow: /admin/ Disallow: /private/ Allow: /public/ Crawl-delay: 2

針對特定爬蟲

User-agent: Googlebot Disallow: /nogoogle/ User-agent: * Disallow: /noothers/

掌握robots.txt規則是每個爬蟲開發者的必修課。通過合理遵守這些規則,我們既能獲取所需數據,又能維護良好的網絡生態。記住,負責任的爬蟲開發是技術可持續發展的基礎。

二、requests庫?

requests 是 Python 中最流行的 HTTP 客戶端庫,以其簡潔優雅的 API 設計著稱。本文將全面介紹 requests 庫的使用方法和最佳實踐。

1、安裝requests庫

在開始之前,確保你已經安裝了requests庫。如果尚未安裝,可以通過pip輕松安裝:

pip install requests -i?https://pypi.tuna.tsinghua.edu.cn/simple

2、網頁的源代碼

如果通常我們想獲取網頁的內容我們是查看頁面里的內容,但是我們使用代碼去獲取資源時就需要用到網頁的源代碼。

我們通過右擊網頁空白處點擊查看源代碼選項

但是通過這種方法無法獲得全部信息,通過JavaScript腳本語言可以查看更多信息。

點擊檢查選項可以查看到腳本代碼

3、獲取網頁資源

  • get()函數

requests.get(url, params=None, **kwargs)

url請求的 URL(必需)
params查詢參數字典或字節序列,會自動附加到 URL
**kwargs其他可選參數(headers, timeout, auth 等)

?

import requestsresponse = requests.get('https://api.github.com')
print(response.status_code)  # 打印狀態碼
print(response.text)         # 打印響應內容
params = {'key1': 'value1', 'key2': 'value2'}
response = requests.get('https://httpbin.org/get', params=params)
print(response.url)  # 查看實際請求的URL
response.status_codeHTTP 狀態碼
response.text響應內容(字符串形式)
response.content響應內容(字節形式)
response.json()將 JSON 響應解析為 Python 對象
response.headers響應頭字典
response.cookies響應 cookies
response.elapsed請求耗時
response.raise_for_status()如果請求失敗(狀態碼非200),拋出異常
  • post()函數

requests.post(url, data=None, json=None, **kwargs)

參數說明
url請求的目標 URL(必需)
data表單數據(字典、字節或文件對象)
jsonJSON 可序列化的 Python 對象
**kwargs其他可選參數(headers, files, auth 等)
import requestspayload = {'key1': 'value1', 'key2': 'value2'}
response = requests.post('https://httpbin.org/post', data=payload)print(response.status_code)
print(response.json())  # 查看服務器返回的JSON響應

?三、selenium庫

Selenium 是一個能讓你「用代碼操作瀏覽器」的開源工具。
常見用途:

  • 自動化功能測試

  • 重復性任務腳本(搶票、簽到、填表)

  • 抓取需要執行 JS 的頁面數據


1、環境搭建

  1. 安裝 Python(https://www.python.org 下載 3.7+)。

  2. 安裝 Selenium?

    pip install selenium ?-i?https://pypi.tuna.tsinghua.edu.cn/simple
  3. Chrome內核的瀏覽器

    Chrome 驅動鏡像:CNPM Binaries Mirror
    • 把解壓后的 chromedriver.exe 放到
      – 任意目錄,并記錄路徑;或
      – 直接丟進 Python 安裝目錄的 Scripts 文件夾(已在系統 Path 中)。

? ? ? ? ? ? ?2.驗證:命令行輸入 chromedriver 不報錯就 OK。

? ? ? 4.?Edge內核的瀏覽器

  • 訪問官方鏡像:Microsoft Edge WebDriver | Microsoft Edge Developer

  • 驅動版本必須與 Edge 瀏覽器版本一致

  • 下載后解壓,得到 msedgedriver.exe(建議重命名為 edgedriver.exe 方便記憶)。

在瀏覽器的關于瀏覽器選項就可以看到瀏覽器的內核版本、

?2、驅動瀏覽器

在selenium庫中通過以下代碼可以查看支持的瀏覽器類型

webdriver.瀏覽器類型名()

?通過以上方法我們也可以加載瀏覽器的驅動使用形式如下如下

webdriver.瀏覽器類型名(executable_path,options,service,keep_alive

executable_path指定驅動路徑webdriver.Chrome(executable_path='chromedriver.exe')
options瀏覽器選項對象webdriver.Chrome(options=chrome_options)
service驅動服務配置webdriver.Chrome(service=service)
keep_alive保持連接webdriver.Chrome(keep_alive=True)

服務配置參數

from selenium import webdriver# 基本初始化
driver = webdriver.Chrome()# 帶選項初始化
from selenium.webdriver.chrome.options import Optionschrome_options = Options()
chrome_options.add_argument('--headless')  # 無頭模式
chrome_options.add_argument('--disable-gpu')  # 禁用GPU加速
chrome_options.add_argument('--window-size=1920x1080')  # 設置窗口大小driver = webdriver.Chrome(options=chrome_options)

?通過以下方法就可以的讀取瀏覽器內容

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time# 方案 A:驅動已加入 PATH
driver = webdriver.Edge()# 方案 B:手動指定驅動路徑(取消下一行注釋)
# driver = webdriver.Edge(executable_path=r"C:\path\to\edgedriver.exe")driver.get("https://www.baidu.com")
driver.find_element(By.ID, "kw").send_keys("Edge Selenium", Keys.RETURN)
time.sleep(3)
driver.save_screenshot("baidu_result.png")
driver.quit()

send_keys()?是 Selenium WebDriver 中用于向網頁元素輸入內容的核心方法,主要用于文本框、文本域等可輸入元素的交互操作。

from selenium import webdriver
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get("https://www.example.com/login")# 定位用戶名輸入框并輸入文本
username = driver.find_element(By.ID, "username")
username.send_keys("testuser")# 定位密碼輸入框并輸入文本
password = driver.find_element(By.NAME, "password")
password.send_keys("securepassword123")

?

from selenium.webdriver.common.keys import Keyssearch_box = driver.find_element(By.NAME, "q")
search_box.send_keys("selenium")  # 輸入文本
search_box.send_keys(Keys.RETURN)  # 模擬回車鍵
Keys.RETURN回車鍵element.send_keys(Keys.RETURN)
Keys.TABTab鍵element.send_keys(Keys.TAB)
Keys.ESCAPEEsc鍵element.send_keys(Keys.ESCAPE)
Keys.BACK_SPACE退格鍵element.send_keys(Keys.BACK_SPACE)
Keys.CONTROLCtrl鍵element.send_keys(Keys.CONTROL + 'a')
Keys.SHIFTShift鍵element.send_keys(Keys.SHIFT + 'hello')
Keys.ARROW_UP上箭頭element.send_keys(Keys.ARROW_UP)

?

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

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

相關文章

如何解決pip安裝報錯ModuleNotFoundError: No module named ‘plotnine’問題

【Python系列Bug修復PyCharm控制臺pip install報錯】如何解決pip安裝報錯ModuleNotFoundError: No module named ‘plotnine’問題 一、摘要 在使用 PyCharm 進行 Python 開發時,常常需要通過 pip install 安裝第三方包。某天,你在終端或 PyCharm 控制…

語校網收錄東京語言學校150所:數據結構建模與工程實現全解

語校網收錄東京語言學校150所:數據結構建模與工程實現全解 一、為什么語言學校的信息抓取如此困難? 在日語教育領域,“語言學校”是一類極度碎片化的機構體系,尤其在東京地區,2025年時點上已合法設立的語言學校已超1…

【按下電源鍵后,電腦里發生了什么?——BIOS:啟動世界的“第一把鑰匙”】

當你按下電源鍵的瞬間,電腦從一片死寂中“蘇醒”。但你是否想過:是什么讓屏幕亮起、風扇轉動、硬件逐一激活? 這背后,有一個隱藏在主板上的“小程序”在默默掌控全局——它就是 BIOS(Basic Input/Output System&#x…

局域網五子棋工具 多人對戰無限制

軟件介紹 今天推薦一款經典的PC端五子棋游戲——GoBang,綠色免安裝版本,完全免費,即開即用,輕松享受對弈樂趣。 游戲模式 軟件提供三種對戰模式:人人對戰、人機對抗以及局域網聯機游戲,滿足不同玩家的社…

分布式彈幕系統設計

需求:分布式彈幕廣播分布式方案1:適用redis 發布訂閱來進行不同ws服務器之間的通信優點:適用小系統方案2:對ws服務器進行一致性hash獲取ws服務的接入點優點:大型系統缺點:視頻連接不均勻挑戰點:廣播速度聚合廣播和線程池來進行優化

夢幻花瓣雨

1. 花瓣設計四種花瓣類型:創建了四種不同形狀和顏色的花瓣(粉紅、淡紫、淺粉和藍綠色)自然形態:使用CSS漸變和復雜邊框半徑模擬真實花瓣的不規則形狀柔和陰影:為花瓣添加微妙的陰影增強立體感2. 動畫效果物理模擬&…

React 閉包陷阱及解決方案與 React 16/17/18 版本區別

一、React 閉包陷阱詳解1. 什么是閉包陷阱React 閉包陷阱是指在函數組件中使用 Hook(特別是 useEffect 和 useCallback)時,由于閉包特性導致訪問到舊的 state 或 props 值,而非最新值的現象。2. 典型場景示例function Counter() {…

[BJDCTF2020]EasySearch

首先嘗試了一下sql注入,但是沒有找到不同回顯。直接用sqlmap掃描一下,因為這邊用的是POST請求,所以需要抓包將請求復制到txt文件中然后使用命令sqlmap -p bp.txt。也沒有發現注入漏洞。 再進行目錄掃描試試: [02:33:43] 403 - …

【Linux】基本指令的使用 and 面試常問

1、man 指令使用方法:man Linux指令。功能:相當于字典,查找指令的用法。常用選項:-k:根據關鍵字搜索聯機幫助。num:只在第num章節查找。-a:將所有章節的都顯示出來,比如man printf它…

零基礎 “入坑” Java--- 十六、字符串String 異常

文章目錄一、String1.字符串的不可變性2.字符串的修改3.StringBuilder和StringBuffer4.【字符串練習】4.1 字符串中的第一個唯一字符4.2 字符串最后一個單詞的長度4.3 驗證回文串二、異常1.初識異常2.異常的分類3.異常的處理4.異常處理流程總結5.自定義異常在上一章節中&#x…

梯度下降在大模型訓練中的作用與實現

梯度下降(Gradient Descent)是深度學習中最核心的優化算法之一。大模型(如GPT、BERT)在訓練時需要優化數十億甚至上千億的參數,而梯度下降及其變體(如SGD、Adam)正是實現這一優化的關鍵工具。它…

【JVS更新日志】開源框架、APS排產、企業計劃、物聯網、邏輯引擎7.30更新說明!

項目介紹 JVS是企業級數字化服務構建的基礎腳手架,主要解決企業信息化項目交付難、實施效率低、開發成本高的問題,采用微服務配置化的方式,提供了低代碼數據分析物聯網的核心能力產品,并構建了協同辦公、企業常用的管理工具等&…

Eclipse中導入新項目,右鍵項目沒有Run on Server,Tomcat的add and remove找不到項目

原因分析沒有勾選Dynamic Web Module、Java、JavaScriptDynamic Web Module版本問題解決方法Eclipse中右鍵項目選擇Properties左側點擊project facets勾選Dynamic Web Module、Java、JavaScript,注意Dynamic Web Module版本問題,要和tomcat版本對應。- Dynamic Web …

IntelliJ IDEA 2025系列通用軟件安裝教程(Windows版)

前言 JetBrains系列開發工具(如IntelliJ IDEA、PyCharm、WebStorm等)是程序員們非常喜愛的集成開發環境。2025年最新版本帶來了更多強大的功能和改進。本教程將詳細介紹如何在Windows系統上安裝JetBrains 2025系列軟件。 最近挖到一個寶藏級人工智能學習…

烏鶇科技前端二面

1. 你能給我介紹一下你參與的重要項目,并重點介紹一下做的內容?通俗解釋: 挑一個你覺得最拿得出手、技術含量最高的項目,說說這個項目是干什么的(比如一個電商網站、一個后臺管理系統),你在里面具體負責了…

《c++面向對象入門與實戰》筆記

前年的書,翻出來整理一下7章.指針指針 sizeof為4*指針 sizeof為 所指類型的sizeof注意free后置空,避免野指針11章.類

easyExcel生成多個sheet的動態表頭的實現

在使用 EasyExcel 實現“多個 Sheet 且每個 Sheet 表頭是動態的”需求時&#xff0c;思路如下&#xff1a;? 實現思路概述 EasyExcel 的 ExcelWriter 支持多個 Sheet 寫入。每個 Sheet&#xff1a; 使用 WriteSheet 創建&#xff1b;可以綁定一個動態生成的表頭 List<List&…

SQL 連接類型示例:內連接與外連接

SQL 連接類型示例&#xff1a;內連接與外連接 示例數據表 假設我們有兩個表&#xff1a; employees 表:emp_idemp_namedept_id1張三1012李四1023王五1034趙六NULLdepartments 表:dept_iddept_name101銷售部102技術部104財務部1. 內連接 (INNER JOIN) 內連接只返回兩個表中匹配的…

Ubuntu安裝gpu驅動,cuda

系統初始化 1、安裝基礎軟件 apt-get update apt-get -y install openssh-server openssh-client apt-utils freeipmi ipmitool sshpass ethtool zip unzip nano less git netplan.io iputils-ping mtr ipvsadm smartmontools python3-pip socat conntrack libvirt-clients li…

ctfshow_源碼壓縮包泄露

根據題目信息直接dirsearch解壓下來一個.txt文件&#xff0c;一個index.phpflag{flag_here}不對那么就去看index.php也沒有東西&#xff0c;于是查看wp發現是訪問/fl000g.txt這才是對的還有很多源碼泄露需要去了解? git源碼泄露? svn源碼泄露? DS_Store 文件泄露? 網站備份…