forked from ccccourse/sp110b
-
Notifications
You must be signed in to change notification settings - Fork 0
MID.md
Kenttsai1 edited this page Jun 12, 2022
·
9 revisions
程式碼中的註解是補充說明的
本身有在遊玩此款遊戲,因此想做出牌位分析圖,內容部分參考網路及書籍。
程式碼執行後會有數據及圓餅圖方便檢視
我們透過瀏覽器所看到的網頁呈現,跟爬蟲所看到的並不同,他們看的是網頁原始碼。
舉個例子,就像我們走進便利超商,拿起架上的三明治,我們會看到肉片、蔬菜以及吐司,非常直觀地出現在眼前;但是爬蟲看得比較像是標籤上的說明,例如鈉含量、卡路里等等抽象純文字的說明。
#抓取你想要爬蟲的網頁的原始碼
import urllib.request as req
print("請輸入想知道的賽季積分分布(6~8)",end=":")
seasons=str(input())
url="https://www.ea.com/zh-tw/games/apex-legends/news/season-"+seasons+"-ranked"
#建立一個request物件,附加Request Headers的資訊(為了模擬使用者進入網站)
request=req.Request(url, headers={
"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36"
})#(User-Agent取得步驟:用chorm開啟網站->點開右上角的三個點點->更多工具->開發人員工具->選擇network->讓網頁重重新整理->選擇最上面的檔案點進去->
#滑到下面找到User-Agent)
with req.urlopen(request) as response:#利用request物件開啟網站
data=response.read().decode("utf-8")
import bs4#載入beautifulsoup4
#解析原始碼並擷取每篇文章標題
root=bs4.BeautifulSoup(data,"html.parser")#使用beautifulsoup解析HTML格式
datas=root.find_all("b")#搜尋全部含有b標籤的地方
lists=[]
for title in datas:
if title.string.find('%')!=-1: #將title內含有"%"的字串提出
lists.append(title.string[0:title.string.find('%')])
print(title.string)
lists=list(map(float,lists))
#第一步: 建立資料
age = 'Bronze', 'Silver', 'Gold', 'Platinum', 'Diamond', 'Master&Predator'
counts = lists
colors = ['tan', 'Silver', 'Gold', 'turquoise', 'aqua', 'crimson']
# matplotlib套件顏色列表
# https://matplotlib.org/tutorials/colors/colors.html
#第二步: 載入matplotlib繪圖程式套件:
import matplotlib.pyplot as plt
#第三步: 繪圖
patches, texts = plt.pie(counts, colors = colors, shadow = True, startangle = 90)
plt.legend(patches, age, loc = "best")
plt.axis('equal')
plt.tight_layout()
plt.show()
https://www.learncodewithmike.com/2020/02/python-beautifulsoup-web-scraper.html
https://pala.tw/python-web-crawler/
Python初學特訓班(第四版)