首頁 >後端開發 >Python教學 >Python爬蟲怎麼使用BeautifulSoup和Requests抓取網頁數據

Python爬蟲怎麼使用BeautifulSoup和Requests抓取網頁數據

WBOY
WBOY轉載
2023-04-29 12:52:062280瀏覽

一、簡介

網路爬蟲的實作原理可以歸納為以下幾個步驟:

  • 發送HTTP請求:網路爬蟲透過向目標網站發送HTTP請求(通常為GET請求)取得網頁內容。在Python中,可以使用requests庫發送HTTP請求。

  • 解析HTML:收到目標網站的回應後,爬蟲需要解析HTML內容以擷取有用資訊。 HTML是一種用於描述網頁結構的標記語言,它由一系列嵌套的標籤組成。爬蟲可以根據這些標籤和屬性定位和提取所需的資料。在Python中,可以使用BeautifulSoup、lxml等函式庫解析HTML。

  • 資料擷取:解析HTML後,爬蟲需要根據預定規則擷取所需的資料。這些規則可以基於標籤名稱、屬性、CSS選擇器、XPath等。在Python中,BeautifulSoup提供了基於標籤和屬性的資料擷取功能,lxml和cssselect可以處理CSS選擇器和XPath。

  • 資料儲存:爬蟲抓取的資料通常需要儲存到檔案或資料庫中以備後續處理。在Python中,可以使用檔案I/O操作、csv函式庫或資料庫連線庫(如sqlite3、pymysql、pymongo等)將資料儲存到本機檔案或資料庫。

  • 自動遍歷:許多網站的資料分佈在多個頁面上,爬蟲需要自動遍歷這些頁面並提取資料。遍歷過程通常涉及到發現新網址、翻頁操作等。爬蟲可以在解析HTML時尋找新的URL,將它們加入待爬取佇列中,並繼續執行上述步驟。

  • 非同步和並發:為了提高爬蟲效率,可以使用非同步和並發技術來同時處理多個請求。在Python中,可以使用多執行緒(threading)、多進程(multiprocessing)、協程(asyncio)等技術實作並發爬取。

  • 反爬蟲策略與應對:許多網站採取了反爬蟲策略,例如限制存取速度、偵測User-Agent、驗證碼等。為了因應這些策略,爬蟲可能需要使用代理IP、類比瀏覽器User-Agent、自動辨識驗證碼等技巧。在Python中,可以使用fake_useragent庫產生隨機User-Agent,使用Selenium等工具模擬瀏覽器操作。

二、網路爬蟲的基本概念

網路爬蟲,又稱為網頁蜘蛛、網路機器人,是一種自動從網路上抓取網頁資訊的程式。爬蟲通常按照一定的規則,訪問網頁並提取有用的資料。

三、Beautiful Soup 和Requests 庫簡介

  1. Beautiful Soup:一個用於解析HTML 和XML 文件的Python 庫,它提供了一種簡單的方法來提取網頁中的資料。

  2. Requests:一個簡單易用的 Python HTTP 庫,用於向網站發送請求並取得回應內容。

四、選擇一個目標網站

本文將以維基百科的某個頁面為例,抓取頁面中的標題和段落資訊。為簡化範例,我們將爬取Python 語言的維基百科頁面(https://en.wikipedia.org/wiki/Python_(programming_language)。

五、使用Requests 取得網頁內容

#首先,安裝Requests 函式庫:

pip install requests

然後,使用Requests 向目標網址發送GET 請求,並取得網頁的HTML 內容:

import requests
 
url = "https://en.wikipedia.org/wiki/Python_(programming_language)"
response = requests.get(url)
html_content = response.text

六、使用Beautiful Soup 解析網頁內容

安裝Beautiful Soup:

pip install beautifulsoup4

接下來,使用Beautiful Soup 解析網頁內容,並擷取所需資料:

from bs4 import BeautifulSoup
 
soup = BeautifulSoup(html_content, "html.parser")
 
# 提取标题
title = soup.find("h2", class_="firstHeading").text
 
# 提取段落
paragraphs = soup.find_all("p")
paragraph_texts = [p.text for p in paragraphs]
 
# 打印提取到的数据
print("Title:", title)
print("Paragraphs:", paragraph_texts)

七、擷取所需資料並儲存

將提取到的資料儲存到文字檔案:

with open("wiki_python.txt", "w", encoding="utf-8") as f:
    f.write(f"Title: {title}\n")
    f.write("Paragraphs:\n")
    for p in paragraph_texts:
        f.write(p)
        f.write("\n")

以上是Python爬蟲怎麼使用BeautifulSoup和Requests抓取網頁數據的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:yisu.com。如有侵權,請聯絡admin@php.cn刪除