close

【Python爬蟲】【實作】爬取期交所商品保證金資料 維持保證金 原始保證金 python兩大爬蟲方法一次教給你

 

python爬蟲

 

一、前言

本篇教學文章有兩大重點:

1.爬取期交所商品保證金資料、2.requests bs4及pandas.read_html測試和比較。

重點1先不說,可以把資料存進資料庫或者做報表等時候可以隨時呼叫,

重點2如果使用pandas.read_html在可用的狀況下可以省多少工!!!

又是一篇手把手文章,再度破壞市場行情的交給你了~

 

進入教學前,不要忘了訂閱按讚分享唷!

部落格教學網站:
https://pixnashpython.pixnet.net/blog
想要即時訂閱最新文章:
https://forms.gle/MdXmiF2HgHhNChL46
訂閱Telegram來接收最新資訊:
https://t.me/joinchat/VUUuDt67Uq5l6CIQ

 

 

 

二、分別使用兩大方法爬取資料


 

(1)方法一:使用正規的爬蟲requests + bs4

使用requests + bs4就是中規中矩,流程大致如下:

1.給予requests目標網址(url)

2.放入bs4解析requests的txt

3.使用soup中的方法來找到我們所要爬取的資料

4.資料整理(我個人喜歡整理成df型態) 沒有一定方便呼叫就好

(程式碼在下方)

python爬蟲

 

(2)方法二:使用pandas中的read_html

1.查看網頁是否有table標籤,如果有可嘗試使用pandas.read_html

2.把網址丟進入(如果有多table則返回list裡面放著df)

(程式碼在下方)

python爬蟲

 

如果再符合pandas.read_html的情況下,可以省去找到資料及整理資料的時間,

但如果你要抓的資料沒有table標籤,或是其他細部的資料,

可能就只能用soup中的方法,慢慢抽取慢慢看了~

 

完整程式碼

import requests
import pandas
from bs4 import BeautifulSoup

''' 
取得期交所商品保證金資料
'''

# =============================================================================
# 方法一 - 正規爬蟲
# =============================================================================

# 目標網址
url = 'https://www.taifex.com.tw/cht/5/indexMargingDetail'

# 使用get
res = requests.get(url)

# 放入bs4
soup = BeautifulSoup(res.text, "html.parser")    

# 取得資料
margin = soup.find_all('table')[0].find_all('tr') # 0為保證金資料

# 資料整理
data = []
for tag in margin:
    s = tag.text.replace(',', '').split('\n')
    s = s[1:-1] # 去頭去尾
    data.append(s)
    
df1 = pandas.DataFrame(data, columns=data[0]).iloc[1:]

# =============================================================================
# 方法二 - 使用pandas.read_html (結構剛好可以用)
# =============================================================================

# 使用read_html
df2 = pandas.read_html(url)[0] # 為margin

 

再程式碼的地方我們可以看到方法一,其中資料整理的部分還包含用迴圈抽取資料(for),

資料的分割取代(replace、split)及資料的篩選,最後整理成list才轉成df。

 

 

三、後記


大家pandas.read_html(url)是一個非常好用的工具,

想取得什麼樣的資料可以告訴我唷!,如果大家有共同需求肯定帶給大家手把手教學。

但如果遇到不能使用作弊方法,那還是乖乖使用正規的方法,

所以requests與bs4還是要學啦!

 

部落格教學網站:
https://pixnashpython.pixnet.net/blog
想要即時訂閱最新文章:
https://forms.gle/MdXmiF2HgHhNChL46
訂閱Telegram來接收最新資訊:
https://t.me/joinchat/VUUuDt67Uq5l6CIQ

arrow
arrow
    創作者介紹
    創作者 恩哥Python 的頭像
    恩哥Python

    恩哥Python量化教室-零基礎也能學會Python

    恩哥Python 發表在 痞客邦 留言(0) 人氣()