Python – Request + BeautifulSoup (1)

簡介

爬蟲爬蟲,這耳熟能詳的名詞在最近這幾年很常聽到,爬蟲也是分很多種的,例如文章爬蟲、深度爬蟲、IP爬蟲等等,而我們這要實行的爬蟲為文章爬蟲,透過程式自動爬取網頁文章的細部資訊,進而拿來我們應用。為了要達到該爬蟲功能,透過Python我們要用到最重要的request與BeautifulSoup。

Request

我們先安裝套件。安裝完後將他們都import近來到檔案中。安裝過程如上圖。

!pip install beautifulsoup4
!pip install requests

import requests
from bs4 import BeautifulSoup

接著我們先講解一下request與BeautifulSoup這兩套件是在做啥的。

Request,是用來抓取網頁的所有data的套件,主要功能有『Get , Post』,取得與上傳資料,我們直接來用程式碼來試試看他是怎樣運作的。

如上圖,我們先單純用『requests.get(‘網址’)』,並且印出『text』,就可以把該網頁的『html code』顯示出來。

# 查詢參數
my_params = {'key1': 'value1', 'key2': 'value2'}

# 將查詢參數加入 GET 請求中
r = requests.get('網址', params = my_params)

而我們也可以透過程式碼,給他多一個搜尋的功能,如上方程式碼,並看上圖。大家可以自己嘗試一下,並按下print出來的url是否有沒有成功的搜尋。

r = requests.get('網址', auth=('帳號', '密碼'))

特別的是,該方法也可以透過上方程式碼,來登入需要輸入帳號密碼的網頁。新增『auth』屬性即可。而這邊我們要抓取網頁資料所以Post我們在這就不詳述。

BeautifulSoup

BeautifulSoup,該套件是要協助你透過request抓取的網頁資料整理得整整齊齊,並且可透過該套件的方法找尋網頁中的指定資料。

既然是要爬新聞,我們就先找一篇來做實驗。這邊假設我們想要爬取新聞網頁的標題,使用方法如上圖,我們在前一段使用了request+關鍵字搜尋,可以得到我們想要的新聞結果,這邊是我們執行的完整結果。

首先我們假如是要自己看程式碼,當然要整整齊齊的才好看,而BeautifulSoup提供了『 prettify() 』方法能讓你抓取的html排列好並呈現之。

find() 』這方法是找尋網頁中的html元素,但他只會找到第一個就會停止,所以你可以看到上圖執行的成果只有一筆。

find_all() 』其實跟『 select() 』一樣,如上圖,列出所有搜尋出來新聞標題。

limit = 數字 』,假如你遇到只想搜尋前三則新聞,則可以使用到該方法,結果如上圖。

小結

這篇分享了最基礎的取得網頁資訊與透過解析html工具來取得我們想到的資料,從『BeautifulSoup(‘網頁資料’,解析模式)』,透過『select , find , find_all』找尋html標籤,就可以得到新聞的標題了。在下一篇我們會講到更多的BS用法,讓你爬得更順爬得更豐富。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *