在這個網絡世界資訊爆棚的時代,我們常常需要抓取網站上面的各種資料進行處理,因為最近在寫一個可以記錄你讀過多少本書的網站,所以今天我們就要來試試看使用Python 的Beautiful Soup來抓取博客來上面的圖書資料!
準備工具
- 安裝好Python的環境
- 安裝BeautifulSoup4 (pip install beautifulsoup4)
在開始之前,我們要先調查一下博客來的頁面長什麼樣子:


搜寻的页面

书本展示的页面
I am text block. Click edit button to change this text. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut elit tellus, luctus nec ullamcorper mattis, pulvinar dapibus leo.
我們可以看到頁面上提供了很多我們要提取的資訊,現在我們要透過CMD進行關鍵字的搜尋,然後抓取搜尋界面的資訊,我們要抓的資訊有書本的照片,標題,和對應跳轉網址,抓到網址之後,我們會進去網址裡面繼續抓更多的資訊
我們先來看看搜尋界面的代碼:
import requests import sys from bs4 import BeautifulSoupr = requests.get(‘https://search.books.com.tw/search/query/key/’+sys.argv[1]) if r.status_code == requests.codes.ok: # 以 BeautifulSoup 解析 HTML 程式碼 soup = BeautifulSoup(r.text, ‘html.parser’) #print(soup.prettify()) 這是把抓取的HTML美化列印出來 #抓出書名 #抓出對應的網址 image = soup.find_all(‘img’,class_=’itemcov’) |
output:


現在我們來實作讀取圖書頁面的代碼:
import requests import sys from bs4 import BeautifulSoupr = requests.get(‘https://www.books.com.tw/products/’+sys.argv[1]) if r.status_code == requests.codes.ok: # 以 BeautifulSoup 解析 HTML 程式碼 soup = BeautifulSoup(r.text, ‘html.parser’) description = soup.find(attrs={“name”:”description”})[‘content’] image = soup.find(attrs={“property”:”og:image”})[‘content’] content = soup.find(“div”, class_=’content’) #String Process isbn_cut_start = ‘ISBN:’ page_cut_start = ‘頁數:’ publisher_cut_start = ‘出版社:’ author_cut_start = ‘作者:’ publish_date_cut_start = ‘出版日期:’ type_cut_start = ‘類別:’ #Get Image URL #Display Content |
本篇方法應用於Booook的新增搜尋書本中