閒聊
昨天試著了解了Pandas,今天要來看看上網找爬蟲基本上一定會出現的BeautifulSoup。
BeautifulSoup
Beautiful是一個Python的函式庫,可以從HTML或XML檔案中分析資料,也可以拿來修復錯誤文件。
pip install beautifulsoup4
from bs4 import beautifulsoup
在使用之前需要先下載
pip install html5lib
完成以上後,第一步我們先來解析一個HTML。
這邊用的範例是https://ithelp.ithome.com.tw/users/20145359 ,會使用到Requests套件進行爬蟲。
import requests
from bs4 import BeautifulSoup
url = 'https://ithelp.ithome.com.tw/users/20145359'
r = requests.get(url) #get請求
soup = BeautifulSoup(r.text,'html5lib') #將r.text內容定義到Beautifulsoup物件
print(type(soup)) #output <class 'bs4.BeautifulSoup'>
import requests
from bs4 import BeautifulSoup
url = 'https://ithelp.ithome.com.tw/users/20145359'
r = requests.get(url)
soup = BeautifulSoup(r.text,'html5lib')
links = soup.find_all('a')
for link in links:
if 'href' in link.attrs:
print(link['href'])
BeautifulSoup定位
None
。None
id
、class
定位,例如soup.find(id = 'name', class_ = 'myclass')
這裡的class後面要加上_
,是因為避免跟Python中的class衝突。
<h3 class="qa-list__title"> <a href="[https://ithelp.ithome.com.tw/articles/10290463] " class="qa-list__title-link">【Day 1】 從0開始學習爬蟲!</a></h3>
從這裡可以先看到一個標籤class叫做「qa-list_title-link」,找到標籤後就可以來定位了。
import requests
from bs4 import BeautifulSoup
url = 'https://ithelp.ithome.com.tw/users/20145359'
r = requests.get(url)
soup = BeautifulSoup(r.text,'html5lib')
link = soup.find('a', class_='qa-list__title-link')
print(link['href'].strip())
結語
今天初步認識了Beautiful這個套件,目前會了定位,他可以做的功能還很多,等之後碰到了再來介紹。
明天輕鬆一點,來聊聊不同的爬蟲種類吧!
明天!
【Day 13】不同的爬蟲種類
參考資料
Python 網路爬蟲Web Crawler教學 — Beautiful Soup篇https://seanchien0525.medium.com/python-requests-beautifulsoup-%E7%88%AC%E8%9F%B2%E6%95%99%E5%AD%B8-83d146faa9e8