承接上篇,抓日成交資訊時,我們得知道股票代碼,那如果我想要有一個可以定時更新的股票代碼清單,要去哪裡拿呢?
一樣到證交所網站,點選產品與服務
,證券編碼
底下的證券編碼查詢
或證券編碼公告
兩個都可以用。差別在於證券編碼查詢
出來的結果可以自己設定 Filter
,而證券編碼公告
就是全部上市的股票代碼,包含股票、權證、ETF等等全部都給你啦!至於要使用哪個,可以依照自己的需求去做選擇。我自己是只需要上市股票的代碼而已,又懶得另外處理分類,所以選擇從證券編碼查詢
抓取股票代碼。
點選證券編碼查詢
頁面的證券編碼 分類查詢
。
會來到此頁面,把 Filter
條件設定好,按下確定。
結果頁面:
依照前篇所教的來確認 URL、Headers、Query、Request/Response 等資訊。另外,前篇提到從Fetch/XHR
去找 URL 的方法,但我們在這個頁面上用 Fetch/XHR
找的話是找不到該 URL 的,所以可以知道這是靜態網頁 HTML。我們只要把開發人員工具
切換到 All
就能找到了。
奇怪!?阿怎麼 Response 有亂碼?
一樣根據前篇所教的,確認它 Response Headers
的 Content-type
。
Content-Type:text/html;charset=MS950
OK!是編碼的問題,所以之後在爬蟲程式記得處理,避免亂碼。
整理一下所知資訊:
https://isin.twse.com.tw/isin/class_main.jsp
。market=1&issuetype=1&Page=1&chklike=Y
。但 Requests 套件本身沒有支援 HTML 的 parser,所以要嘛自己寫要嘛裝別的套件。
用膝蓋想也知道,當然是裝套件囉!
我們要使用的是套件叫做 Beautiful Soup。它的特色就是讓不同的 HTML Parser 透過它提供的 Interface 來統一操作方法 。
安裝 Beautiful Soup。
pip install beautifulsoup4
再來是安裝 Parser。Beautiful Soup 除了有支援 Python 原生的 HTML Parser,也有支援一些第三方的 Parer。
引用自Beautiful Soup 官方:
If you can, I recommend you install and use lxml for speed. If you’re using a very old version of Python – earlier than 2.7.3 or 3.2.2 – it’s essential that you install lxml or html5lib. Python’s built-in HTML parser is just not very good in those old versions.
官方文件是推薦使用 lxml。所以我們就安裝 lxml 吧!
安裝方法:
pip install lxml
另外,下圖是官方有支援的 Parser 及差異比較。
都安裝完成後測試一下。
from bs4 import BeautifulSoup
html = "<html>test test test</html>"
soup = BeautifulSoup(html, "lxml")
本篇章目前先這樣,讓大家消化一下,Beautiful Soup 的基本用法就不另外講解了,建議可以看一下 Beautiful Soup 官方文件的 Quick Start。下篇文章就要開始講解怎麼用程式抓股票代碼清單囉!