初學者必看!網路爬蟲的簡單範例使用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奇摩最新電影

 

 

 

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 波羅、希夏普2020 的頭像
    波羅、希夏普2020

    希夏普2020的程式天地

    波羅、希夏普2020 發表在 痞客邦 留言(0) 人氣()