[爬蟲]1.1.1網路爬蟲的概念

来源:https://www.cnblogs.com/yaoqian/archive/2023/07/21/17572506.html
-Advertisement-
Play Games

# 1.安裝Django 終端運行 ``` pip install django ``` ![image-20230721105914778.png](https://s2.loli.net/2023/07/21/E2RhGoHT9uDzKBP.png) 查看django是否安裝成功 ``` pyt ...


網路爬蟲,也稱為網頁爬蟲或者網頁蜘蛛,是一種用來自動瀏覽互聯網的網路機器人。它們會按照特定的規則,從網頁上獲取信息,然後將這些信息保存下來。網路爬蟲的名字來源於它們的工作方式,它們就像是在網路上爬行的蜘蛛,通過鏈接從一個網頁爬到另一個網頁。

工作原理

網路爬蟲的基本工作原理是按照一定的規則,自動地抓取網路信息。大體上,它的工作過程可以分為以下幾步:

  1. 初始URL: 爬蟲開始工作時,我們需要給它一些初始的URL。這些URL就像是爬蟲的"種子",提供了爬蟲的起點。

  2. 發送請求和獲取響應: 爬蟲會向這些URL發送請求,然後得到網頁的響應。這個過程就像是你在瀏覽器中輸入一個網址,然後瀏覽器顯示出網頁的過程。

  3. 解析網頁: 爬蟲會解析得到的網頁內容,從中提取出我們需要的信息,比如新聞的標題和內容、商品的價格和圖片等。

  4. 提取鏈接: 在解析網頁的過程中,爬蟲還會提取出網頁中的鏈接,然後將這些鏈接添加到待爬取的URL隊列中。

  5. 迴圈爬取: 爬蟲會重覆上述過程,不斷地從URL隊列中取出URL,發送請求,獲取響應,解析網頁,提取信息和鏈接,直到URL隊列為空,或者達到了我們設置的爬取深度。

這就是網路爬蟲的基本工作原理。它們就像是在網路上爬行的蜘蛛,通過鏈接從一個網頁爬到另一個網頁。

網路爬蟲的分類

按照工作方式,網路爬蟲可以分為兩類:一類是通用網路爬蟲,一類是聚焦爬蟲。

  1. 通用網路爬蟲: 通用網路爬蟲主要是搜索引擎使用的爬蟲,比如Google的Googlebot,它們的目標是儘可能地爬取整個網路。

  2. 聚焦爬蟲: 聚焦爬蟲則是針對特定的任務或者網站進行爬取,比如我們自己編寫的爬蟲,通常就是聚焦爬蟲。

網路爬蟲的應用

網路爬蟲有很多應用,比如搜索引擎的網頁索引,新聞的自動聚合,商品價格的監控等。在數據科學和機器學習領域,網路爬蟲也經常被用來收集訓練數據。

網路爬蟲的例子

這是一個簡單的Python網路爬蟲的例子,它使用requests庫發送請求,使用BeautifulSoup庫解析HTML,從Python官方網站上爬取所有PEP的標題。

import requests
from bs4 import BeautifulSoup

url = "https://www.python.org/dev/peps/"

response = requests.get(url)

soup = BeautifulSoup(response.text, 'html.parser')

pep_list = soup.find('table', {"class": "list-table"}).findAll('tr')

for pep in pep_list[1:]:
    number = pep.find('td', {"class": "pep-number"}).text
    title = pep.find('td', {"class": "pep-title"}).text
    print(f'{number}: {title}')

請求和響應

在網路爬蟲的工作過程中,發送請求和獲取響應是非常重要的一步。簡單來說,請求就是爬蟲向伺服器發送一個消息,告訴伺服器它想要獲取什麼信息,響應則是伺服器返回的消息,包含了爬蟲請求的信息。

HTTP協議是互聯網上應用最廣泛的一種網路協議,所有的WWW文件都必須遵守這個標準。一個HTTP請求包含三個部分:請求行、請求頭部和請求數據。同樣,HTTP響應也包含三個部分:狀態行、消息報頭和響應正文。

在Python中,我們常用的發送HTTP請求的庫有requests和urllib,其中requests更為簡單易用。

這是一個使用requests發送GET請求的例子:

import requests

response = requests.get('https://www.python.org')

print(response.status_code)  # 列印狀態碼
print(response.text)  # 列印響應內容

網頁解析

解析網頁是網路爬蟲的另一個重要步驟。網頁大部分是用HTML語言編寫的,HTML是一種標記語言,它的內容由一系列的標簽組成。我們可以通過解析HTML,提取出我們需要的信息。

Python中常用的HTML解析庫有BeautifulSoup和pyquery等,其中BeautifulSoup更為常用。

這是一個使用BeautifulSoup解析HTML的例子:

from bs4 import BeautifulSoup

html = """
<html>
    <head>
        <title>Test Page</title>
    </head>
    <body>
        <h1>Welcome to the Test Page</h1>
        <p>This is a <a href="https://www.example.com">link</a>.</p>
    </body>
</html>
"""

soup = BeautifulSoup(html, 'html.parser')

title = soup.find('title').text
h1 = soup.find('h1').text
link = soup.find('a')['href']

print(f'Title: {title}')
print(f'H1: {h1}')
print(f'Link: {link}')

鏈接提取

鏈接提取是網路爬蟲的一項基本技能。通過提取網頁中的鏈接,網路爬蟲可以從一個頁面跳轉到另一個頁面,就像蜘蛛通過絲線在網上移動一樣。

在HTML中,鏈接通常由<a>標簽表示,鏈接的URL通常寫在href屬性中。我們可以用BeautifulSoup提取出所有的<a>標簽,然後讀取它們的href屬性,就可以得到所有的鏈接。

這是一個提取鏈接的例子:

from bs4 import BeautifulSoup

html = """
<html>
    <body>
        <a href="https://www.example.com">Link 1</a>
        <a href="https://www.example2.com">Link 2</a>
        <a href="https://www.example3.com">Link 3</a>
    </body>
</html>
"""

soup = BeautifulSoup(html, 'html.parser')

links = soup.findAll('a')

for link in links:
    print(link['href'])

這就是網路爬蟲的基本概念,它們# 網路爬蟲的概念

網路爬蟲,也稱為網頁爬蟲或者網頁蜘蛛,是一種用來自動瀏覽互聯網的網路機器人。它們會按照特定的規則,從網頁上獲取信息,然後將這些信息保存下來。網路爬蟲的名字來源於它們的工作方式,它們就像是在網路上爬行的蜘蛛,通過鏈接從一個網頁爬到另一個網頁。
推薦閱讀:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

file


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 打開前端項目中的 package.json,會發現眾多工具已經占據了我們開發日常的各個角落,它們的存在於我們的開發而言是不可或缺的。有沒有想過這些工具的功能是如何實現的呢?沒錯,抽象語法樹 (Abstract Syntax Tree) 就是上述工具的基石。 ...
  • TCP/IP是一種分層模型,它將通信協議分解為五個層次,每個層次都有特定的功能和任務。以下是TCP/IP五層的處理流程: ...
  • 採用依賴倒置原則後的分層架構和六邊形架構,實際上都符合整潔架構設計理念。但是六邊形架構中使用埠與適配器,讓應用程式能夠以一致的方式被用戶、程式、自動化測試、批處理腳本所驅動,同時能夠讓應用程式邊界更加清晰,從而能更好地防止領域層和應用層邏輯泄露到外層。 ...
  • 本文面向受眾可以是運營、可以是產品、也可以是研發、測試人員,作者希望通過如下思路(知歷史->清家底->明目標->定戰略->做戰術->促成長)幫助大家能夠瞭解電商大促系統的高可用保障,減少哪些高深莫測的黑話和高大尚的論調,而是希望有個體系化的知識讓讀者有所得。 ...
  • 可視化邏輯編排引擎,包括數據流驅動的邏輯編排原理,業務編排編輯器的實現,頁面控制項聯動,前端業務邏輯與UI層的分離,子編排的復用、自定義迴圈等嵌入式子編排的處理、事務處理等 ...
  • @RequestBody註解可以用於POST請求接收請求體中的參數,使用方式如下: ``` java @Controller public class IndexController { @PostMapping(value = "/submit", produces = MediaType.APP ...
  • [原題鏈接](https://www.luogu.com.cn/problem/P4552 "原題鏈接") 第一步對於學過差分的人應該不難想 定義差分數組 $dis \quad s.t. \quad dis[i] = a[i] - a[i-1] $ 那麼不難發現問題一隻要讓 $dis[2] ... ...
  • # mybatisPlus > mybatisplus 基礎: `mybatis` `spring` ` springmvc` ## 為什麼要學習mybatisplus ? 可以解決大量時間 所有的CRUD 代碼它都可以自動化完成 > 簡介 簡化 jdbc 操作 簡化 mybatis # 快速入門 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...