お世話になっております。
Pythonモジュールのbeautifulsoupを用いてhtmlを解析した後に、all_tableにtable要素を入れています。
その後のfor文の中でall_tablesから取り出しているvalueの中には<tag>~</tag>の中身が1つずつ入っているかと思うのですが、その中で指定した番号の並びにあるtd要素の値をprocessed_tablesに入れています。
###分からない部分
一番下にあるコードにて、for文の中でtd要素の番号を指定している部分があるかと思うのですが、そこを変数などを用いて汎用的に書く方法が分かりません。
具体的には、row_numberに入っている(tr要素の)数だけ番号に+8する処理をして、その値をprocessed_tablesに追加していきたいです。
for文の中にカウント用とtd要素の並び番号を持っておく変数を用意して、下のようなコードを書いてみましたが、iの中にただのintが入ってしまいエラーが出てしまいます。
for index, value in enumerate(all_tables): row_number = len(value.tbody.find_all('tr')) sequence = 1 counter = 1 for i in range(row_number): processed_table[index] = { 'element': [i.find_all('td')[sequence].text], 'value': [i.find_all('td')[sequence+1].text], 'remark':[i.find_all('td')[sequence+6].text] } sequence += 8 counter += 1
初歩的な質問でお見苦しい点があるかと思いますが、ご教授頂けませんでしょうか。
以上、よろしくお願いします。
###コード
python
1#取得するtable数 2number = int(input()) 3 4#入力された数だけtableタグを取得する 5all_tables = soup.find_all('table', limit = number) 6 7 8#指定数の配列を用意して0で初期化 9processed_tables = [ 0 for i in range(number) ] 10 11 12 13for index, value in enumerate(all_tables): 14 row_number = len(value.tbody.find_all('tr')) 15 16 processed_tables[index] = { 17 'element': [ 18 value.find_all('td')[1].text, 19 value.find_all('td')[9].text, 20 value.find_all('td')[17].text, 21 ], 22 'value': [ 23 value.find_all('td')[2].text, 24 value.find_all('td')[10].text, 25 value.find_all('td')[18].text, 26 ], 27 'remark': [ 28 value.find_all('td')[7].text, 29 value.find_all('td')[15].text, 30 value.find_all('td')[23].text, 31 ] 32 } 33
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/21 12:19
2018/11/22 06:32
2018/11/22 12:13