皆様、初めまして。
現在、Pythonでクロール・スクレイピングの練習をしています。
その中のライブラリ、pandas.DataFrameを実装中に以下のエラーメッセージが発生し困っています。
具体的な内容としましては、
スクレイピングする際にrequests.status_codeを用いてifで判定をしているのですが、
ifが上手く働いてないように感じたのでelse句を挟んで、上手くデータを取得できなかった場合はNotfundとなるようにしました。
しかし、上手くデータを取得出来ていても何も表示がされず、dfのインデントを調整などしてみたのですがpandas.DataFrameが上手くいっていません。
if文なしの場合は正しく動くのに、if文で判定した際には動かない。
この違いが調べてみてもよくわからず困っています。
お手数おかけしますが、何卒ご教授お願い致します。
エラーメッセージ
Python
1 File "<ipython-input-56-3b42deceabb8>", line 21 2 df.set_index('ダム名', inplace=True) 3 ^ 4IndentationError: unexpected indent
該当のソースコード
Python
1import pandas as pd 2import requests 3from bs4 import BeautifulSoup 4 5url = 'http://www.river.go.jp/kawabou/ipDamGaikyo.do?init=init&areaCd=89&prefCd=4001&townCd=&gamenId=01-0903&fldCtlParty=no' 6 7headers = { 8 'User-Agent': 9 'Mozilla/5.0 (Windows NT 10.0; WOW64; Trident/7.0; rv:11.0) like Gecko' 10} 11 12r = requests.get(url, headers=headers) 13 14if r.status_code == 200: 15 soup = BeautifulSoup(r.content, 'html5lib') 16 result = [[ 17 x.get_text(strip=True) for x in y.find_all(['th', 'td']) 18 ] for y in soup.select('body > div.gaikyoCntt > table > tbody > tr ')] 19 df = pd.DataFrame(data=result[1:], columns=result[0]) 20 df.set_index('ダム名', inplace=True) 21 df 22else: 23 print("Notfund")
試したこと
if文がなしの場合(正しく表示される)や、if文有の場合でdfのインデント調整(正しく表示されない)など。
補足情報(FW/ツールのバージョンなど)
Google Colaboratoryの言語、Python3.0を使用しています。
回答1件
あなたの回答
tips
プレビュー