前提・実現したいこと
python3でxpathを使用してデータの取得をしたいです。
複数のデータを取得するため、for文内でxpathの数値を変更していますが、
途中でデータを取得できなくなりました。
どこがおかしいのかわからなかったので質問させていただきます。
発生している問題・エラーメッセージ
Traceback (most recent call last):
File "<stdin>", line 15, in <module>
IndexError: list index out of range
該当のソースコード
import csv import time import requests import lxml.html output = ["日付","始値","高値","安値","終値"] c = "2764" year = ["2010","2011","2012","2013","2014","2015","2016","2017","2018","2019"] variable_1 = ["1","2","3","4","5"] with open('no.csv',encoding='sjis', newline='') as f: data = csv.reader(f) for row in data: variable_2 = row for y in year: url = "https://kabuoji3.com/stock/"+c+"/"+y+"/" r = requests.get(url) html = r.text root = lxml.html.fromstring(html) for v_2 in variable_2: if len(output) != 0: with open('data_10.csv','a',newline="") as f: writer = csv.writer(f) writer.writerow(output) output = [] for v_1 in variable_1: path_no = "//*[@id='base_box']/div/div[4]/div/div/div/table/tbody["+v_2+"]/tr/td["+v_1+"]" s_data = root.xpath(path_no) data_t = s_data[0].text print(data_t) output.append(data_t) time.sleep(1) コード
試したこと
xpathを手動で入力してもv_2の部分を2にするとs_dataに何も入りませんでした。
v_2が1の間(v_1が1~5まで1周する間)は問題なくデータを取得できました。
補足情報(FW/ツールのバージョンなど)
python3.7.4
回答1件
あなたの回答
tips
プレビュー