今天要介紹的是很實用的爬蟲
如何運用對於網頁的認識來將需要的資訊即時的抓下來
是屬於非常好用的技巧喔
首先我們要先對網頁有點認識
用以下這個簡單的案例
<html><head><title>Hello World</title></head>
<body><h2>Test Header</h2>
<p>This is a test.</p>
<a id="link1" href="/my_link1">Link 1</a>
<a id="link2" href="/my_link2">Link 2</a>
<p>Hello, <b class="boldtext">Bold Text</b></p>
</body></html>
仔細觀察一下 不難發現網頁其實是由<>與</>組成的
例如 Hello World 就是由<title>與</title>包住
而這個東西我們稱之為標籤
因此網頁其實就是由無數個標籤所組成的
而我們要的資訊往往都在標籤的中間
在了解了這個概念後
今天會用到的套件則是有:requests, BeautifulSoup
馬上來看看應該怎麼爬蟲吧
今天的案例是Yahoo股市
我們打算爬下每天的主力在台積電(2330)的買賣超情形
(點擊看大圖)
所以基本的思路是要爬下這個表格中的買進賣出
進行加總後相減
而這裡沒有利用買超來操作是因為怕遇到加減號會有問題
因此程式碼如下
## 載入爬蟲套件
import requests
from bs4 import BeautifulSoup
url_credit = 'https://tw.stock.yahoo.com/d/s/major_2330.html'
page = requests.get(url_credit)
page = BeautifulSoup(page.text, 'html.parser')
print(page.prettify)
一開始先載入會用到的套件
接著將網址設定在變數url_credit中
接著利用requests中的get函數將網頁抓下來
再利用BeautifulSoup以html的方式解析
最後把它印出來
而.prettify是讓他印出來會有比較好的排版
但其實排版還是很糟XD
接著利用crtl+F找出我們要抓的東西
可以看到標籤名為td
而基本上表格的標籤就會是td
中間還有很多奇怪的東西 先不要管他
最後是有一個class 稱之為類別
因此就利用標籤和類別將需要的東西抓下來
td_tags = page.find_all('td', 'ttt')
td_tags
利用.find_all來將所有具有這個標籤和類別的東西抓出來
而這個東西的結果是
順利的將要的東西抓下來了
但大家可以發現我們並不想要那些無用的標籤
只需要裡面的值就好了
於是就可以利用.string完成
所以這邊利用迴圈把所有值從標籤取出來
sell_buy = []
for i in td_tags:
sell_buy.append(i.string)
sell_buy
成果如下:
成功!!
最後就只是把買和賣各自加起來後相減
就可以算出買賣超了
buy = []
sell = []
for i in range(10, len(sell_buy), 4):
buy.append(int(sell_buy[i]))
for i in range(11, len(sell_buy), 4):
sell.append(int(sell_buy[i]))
sum(buy) - sum(sell)
就可以算出當日買賣超囉~
所以今天學到的有:
了解網頁
使用爬蟲套件
未來會繼續分享資料分析的實例給大家囉~
沒有留言:
張貼留言