項目 widget-area-1 尚未註冊或是沒有一個 view.php 檔案.
項目 widget-area-1 尚未註冊或是沒有一個 view.php 檔案.
項目 search-input 尚未註冊或是沒有一個 view.php 檔案.

【Python 網頁爬蟲 #4】python 爬蟲筆記 – 使用 requests + BeautifulSoup 爬取 google 文件的內容

前言

之前有一個任務是我需要去爬取 Google 文件中的一些內容,
因此就產生了這一篇程式碼,用這篇文章來作為紀錄。
在本文中,我們將示範如何使用 requestsBeautifulSoup 來抓取 Google 文件中的內容。

範例程式碼

import requests
from bs4 import BeautifulSoup

url = "google 文件網址, 記得改為 public 發布後, 才能讓程式爬取"

def read_google_doc(url):
    response = requests.get(url)
    if response.status_code != 200:
        print("Error fetching page")
        exit()
    else:
        content = response.content
        soup = BeautifulSoup(response.content, 'html.parser')
        # print(content)
        all_results = str(soup.select('#contents > div'))
        replace_list = ['<p class="c1">', '<div class="c3 doc-content">', '<p class="c0 c2">', '<span class="c0">', '</p>', '</span>', '<p class="c1 c3">', '</div>', '<div class="c2 doc-content">', '<p class="c0">', '<span class="c1">']
        for each_word in replace_list:
            all_results = all_results.replace(each_word, "")
        all_results = all_results.replace(" ","")
        return text_spliter(all_results)

使用 requests 抓取網頁內容

def read_google_doc(url):
    response = requests.get(url)
    if response.status_code != 200:
        print("Error fetching page")
        exit()
    else:
        content = response.content

在這段程式碼中,我定義了一個 read_google_doc 函數,
該函數接受一個 「google doc 公開文件的網址」 作為參數。

接著,我們使用 requests.get() 函數發送 HTTP 請求,並檢查返回的狀態碼。
如果狀態碼不是 200(200 表示成功),
我們將輸出錯誤信息並退出。否則,我們將網頁內容保存到 content 變量中。

使用 BeautifulSoup 解析網頁內容

soup = BeautifulSoup(response.content, 'html.parser')
all_results = str(soup.select('#contents > div'))

我們再來使用 BeautifulSoup 解析網頁內容。
首先,我們將剛剛從拿到的 response 裡面,取得 content 傳給 BeautifulSoup
並指定解析器為 'html.parser'
接著,我們使用 soup.select() 函數選擇所需的元素,保存到 all_results 中。

這邊有個小技巧,我們可以使用網頁的開發工具 (F12) 來快速幫我們找到我們想要的解析路徑,
F12 -> 找到對應的 html 片段 -> 右鍵「copy selector」

處理網頁內容

在處理網頁內容時,我們需要將多餘的 HTML 標籤移除,以便得到乾淨的文字。
我們可以通過遍歷需要替換的標籤列表來實現這一目標:

以下內容 replace 很多很雜,基本上應該還有更簡單俐落的做法,不過這邊只是記錄用, 就沒有另外特別整理

replace_list = ['<p class="c1">', '<div class="c3 doc-content">', '<p class="c0 c2">', '<span class="c0">', '</p>', '</span>', '<p class="c1 c3">', '</div>', '<div class="c2 doc-content">', '<p class="c0">', '<span class="c1">']
for each_word in replace_list:
    all_results = all_results.replace(each_word, "")
all_results = all_results.replace(" ","")

replace_list 保存了所有我們要替換的內容,
可以讓我們在後續處理時處理掉這些多餘的字元,

最後我們再用 replace 進行替換。
並且透過 replace(” “,””),快速的把文件內的空白全部消除掉。

到這邊我們就已經完成了,可以把一份乾淨的 Google 文件裡面,裡面的文字內容,全部爬取出來的全部過程。

Reference

Howard Weng
Howard Weng

我是 Howard Weng,很多人叫我嗡嗡。這個網站放了我的各種筆記。希望這些筆記也能順便幫助到有需要的人們!如果文章有幫助到你的話,歡迎幫我點讚哦!
另外,因為定位是「個人的隨手筆記」,有些文章內容「⚠️可能我理解有誤⚠️」或「?只寫到一半?」,如果有發現這樣的情況,歡迎在該文章的最下面留言提醒我!我會儘快修正或補上!感謝大家的建議與幫忙,讓網站能變得更好?

文章: 890