2018年12月29日 星期六

Python-簡單爬蟲教學

(本篇文章利用Python實作)

今天要介紹的是很實用的爬蟲
如何運用對於網頁的認識來將需要的資訊即時的抓下來
是屬於非常好用的技巧喔

首先我們要先對網頁有點認識
用以下這個簡單的案例
<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)

就可以算出當日買賣超囉~

所以今天學到的有:
了解網頁
使用爬蟲套件

未來會繼續分享資料分析的實例給大家囉~

沒有留言:

張貼留言