初學者必看!網路爬蟲的簡單範例使用Python
現在有很多人都在學網路爬蟲,我過去工作也是有網路爬蟲的經驗,那時候我是使用C#,而網路爬蟲比較好的方法是用Python程式,最近我就學了Python,也成功爬蟲了一些東西,在這裡我分享一個簡單的網路爬蟲給大家。
這個程式會使用到BeautifulSoup,在撰寫爬蟲程式之前要先做安裝的動作。先開啟cmd字元提示命令,然後輸入下面的指令:
- pip install requests
然後就會出現安裝的畫面開始安裝,今天我用爬蟲博客來網路書店作範例,輸出暢銷書排行榜書籍資訊,暢銷書排行榜的網址是https://www.books.com.tw/web/sys_saletopb/books/,BeautifulSoup安裝完成以後打開Python的編輯器,輸入以下的程式:
import requests
from bs4 import BeautifulSoup
url ="https://www.books.com.tw/web/sys_saletopb/books/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml')
info_items = soup.find_all('li', 'item')
for item in info_items:
number=item.find('div','stitle').text.strip()
bookname=item.find('div','type02_bd-a').a.text.strip()
price=item.find('li','price_a').text.strip()
writter=item.find(["ul","li"]).a.text.strip()
link=item.find('div','type02_bd-a').a.get('href').strip()
print(' 排名:{}, 書名:{}, {}, {}, {}'.format(number, bookname, writter, price, link))
這裏是用html的tag來爬蟲,可以按F12去查看網頁的html語法來決定你要抓哪個節點,特別跟大家解說幾個函式
find_all是指找出所有這個節點裡面的所有內容,find_all('li', 'item')前面的li指的是html語法中的li這個標籤,會去抓取<li></li>裡面的內容,而後面的item則是指class="item"。
find是指找出符合這個節點的第一項,然後跟find_all一樣,前面是html標籤,後面是class,因為我們要抓取在這個標籤中的文字,所以要在後面加上text.strip() 才會去抓取這個標籤內的文字,不然就會去抓取裡面的html語法。
a.text.strip()這個則是指會去抓取<a></a>裡面的文字內容。
如果我要抓取好幾個節點下面的內容可不可以?是可以的find(["ul","li"])就是去抓取<ul><li></li></ul>裡面的內容。
如果要抓取超連結網址可不可以呢?沒問題,a.get('href')就是去抓取<a href="..."></a>裡面href的網址。
最後爬到的前10筆資訊如下,後面的我就不一一列出了。
排名:TOP1, 書名:原子習慣:細微改變帶來巨大成就的實證法則, 詹姆斯‧克利爾, 優惠價:79折261元, https://www.books.com.tw/products/0010822522?loc=P_0003_001
排名:TOP2, 書名:SPY×FAMILY 間諜家家酒 1, 遠藤達哉, 優惠價:85折94元, https://www.books.com.tw/products/0010846281?loc=P_0003_002
排名:TOP3, 書名:SPY×FAMILY 間諜家家酒 2, 遠藤達哉, 優惠價:85折94元, https://www.books.com.tw/products/0010855481?loc=P_0003_003
排名:TOP4, 書名:SPY×FAMILY 間諜家家酒 3, 遠藤達哉, 優惠價:85折94元, https://www.books.com.tw/products/0010855848?loc=P_0003_004
排名:TOP5, 書名:兒子使用說明書:在你放棄和兒子溝通之前,請先看腦科學專家怎麼說, 黑川伊保子, 優惠價:79折277元, https://www.books.com.tw/products/0010921600?loc=P_0003_005
排名:TOP6, 書名:SPY×FAMILY 間諜家家酒 4, 遠藤達哉, 優惠價:85折94元, https://www.books.com.tw/products/0010864957?loc=P_0003_006
排名:TOP7, 書名:媽媽的每一天:高木直子陪你一起慢慢長大(首刷高木直子簽名祝福限量印刷扉頁), 高木直子, 優惠價:79折261元, https://www.books.com.tw/products/0010922997?loc=P_0003_007
排名:TOP8, 書名:SPY×FAMILY 間諜家家酒 5, 遠藤達哉, 優惠價:85折94元, https://www.books.com.tw/products/0010875505?loc=P_0003_008
排名:TOP9, 書名:SPY×FAMILY 間諜家家酒 7, 遠藤達哉, 優惠價:85折94元, https://www.books.com.tw/products/0010908318?loc=P_0003_009
排名:TOP10, 書名:SPY×FAMILY 間諜家家酒 6, 遠藤達哉, 優惠價:85折94元, https://www.books.com.tw/products/0010886336?loc=P_0003_010
補充一下,如果你就只要列出前10筆的資訊,可以這麼做
info_items = soup.find_all('li', 'item',limit=10)
limit=10就表示你只要前10筆資料就好了。
以上就是簡單的網路爬蟲使用Python範例程式。另外大家參考可以看看下面這篇教學,滿適合初學者的。
Python 爬蟲實戰範例 學會抓取 Yahoo奇摩最新電影
留言列表