Pythonでスクレイピングチャレンジ

未経験マンがPython で株価スクレイピングをする備忘録
(メモしておかないと本当に何してたか忘れて効率悪い)

【やろうとしていること】
・URLを指定し、時系列で(3か月分程度)の株価、出来高(できれば株価出来高それぞれの前日比も)を取得
・DBに取得した株価を格納、後に分析をできるよう保存する

【How】
今やろうとしているのはpandasを使って、サイト内から株価、出来高等が書かれたtableごと取得しようとしている
(DBへの格納については未検討)
下記は現在のコード
-------------------------------------------------------------------------
import pandas as pd
#import lxml
from bs4 import BeautifulSoup
import html5lib

url = 'https://kabutan.jp/stock/kabuka?code=2170'
dfs = pd.read_html(url)

print(dfs[5]) #HTMLを見て五番目にお目当てのTableあり
-------------------------------------------------------------------------
# 出力結果
 日付 始値 高値 安値 終値 前日比 前日比% 売買高(株)
0 19/01/25 889 903 878 878 -3 -0.3 246400
1 19/01/24 888 889 864 881 8 0.9 223400
2 19/01/23 861 888 854 873 0 0.0 283500
3 19/01/22 893 905 870 873 -16 -1.8 276100
4 19/01/21 947 949 885 889 -43 -4.6 463800
5 19/01/18 907 939 903 932 29 3.2 370400
6 19/01/17 900 910 890 903 11 1.2 297000
7 19/01/16 882 902 874 892 20 2.3 340200
8 19/01/15 840 880 834 872 21 2.5 290600
9 19/01/11 844 871 844 851 16 1.9 368900
10 19/01/10 878 878 833 835 -53 -6.0 542800
11 19/01/09 880 908 878 888 9 1.0 405700
12 19/01/08 886 890 870 879 18 2.1 355300
13 19/01/07 857 877 849 861 31 3.7 328700
14 19/01/04 821 845 818 830 -14 -1.7 423400
15 18/12/28 854 865 824 844 -19 -2.2 626800
16 18/12/27 858 868 839 863 64 8.0 491600
17 18/12/26 805 836 786 799 3 0.4 593300
18 18/12/25 774 806 764 796 -23 -2.8 1090400
19 18/12/21 825 837 790 819 -4 -0.5 742300
20 18/12/20 847 858 805 823 -44 -5.1 642400
21 18/12/19 866 888 842 867 5 0.6 433400
22 18/12/18 875 884 845 862 -43 -4.8 676400
23 18/12/17 917 926 887 905 -15 -1.6 472800
24 18/12/14 963 966 910 920 -46 -4.8 539000
25 18/12/13 997 997 958 966 -18 -1.8 344400
26 18/12/12 953 985 945 984 46 4.9 333400
27 18/12/11 969 975 931 938 -11 -1.2 401900
28 18/12/10 952 962 928 949 -38 -3.9 529500

【現在の課題】
・他のサイトでもデータ取得できるか試してみたが、「urllib.error.HTTPError: HTTP Error 403: Forbidden」のエラーが出る
(Agentを偽装する必要あり)

【次にやること】
・取得したデータをDBに格納する
・Agentの偽装方法を学ぶ