私はPythonで自分の足を濡らすための簡単なWebスクレイピングスクリプトを作成しています。 私はアイデアが、私は、3つのリストのそれぞれに電子メール、電話、およびWebアドレスを取得togtherそれらを圧縮して、反復処理ということで、次のリストに追加する際の問題 - IndexError:リストインデックスが範囲外です。
#Create 3 different lists to populate.
mails = []
phones = []
webs = []
def go_get_info(info):
for item in info:
#email = (item.contents[3].find_all("span", {"class": "text"})[0].text).strip()
#phone = (item.contents[3].find_all("span", {"class": "text"})[1].text).strip()
www = (item.contents[3].find_all("span", {"class": "text"})[2].text).strip()
if not www:
webs.append("empty")
else:
webs.append(www)
と少しが、問題のを打つことだし、 CSVに書き込む。
私が問題を抱えているように見えるのは、www **です(それで、私はそれをコメント解除したままにしています)。 **私はまた、空の条件を追加することによって、問題を軽減しようとしました。****
が、私はこの関数を呼び出すスクリプトを実行すると、私は戻ってい
± |add-csv-support U:1 ?:1 ✗| → python scrape.py
Traceback (most recent call last):
File "scrape.py", line 55, in <module>
go_retrieve_contact(get_venue_link_list(links))
File "scrape.py", line 30, in go_retrieve_contact
go_get_info(info)
File "scrape.py", line 43, in go_get_info
www = (item.contents[3].find_all("span", {"class": "text"})[2].text).strip()
IndexError: list index out of range
を以下のそれは理にかなっていますその問題は返される値または値の不足のいずれかであることがわかります。私はグーグルでは、完全な解決策を見つけることができませんでした。
私は
Aにこのケースでは何ができます)より良い起こっおよびデバッグより良いいただきまし理解しています。
B)問題を解決します。
おかげで、
を使用する場合がありますfind_all'は一致するリストを返します。インデックス2が範囲外である場合、それは3つ未満の一致が見つかったことを意味します。結果を変数に保存し、そこにない要素にアクセスしようとする前に*の長さをチェックします。次に、そのケースをどのように処理するかを決めることができます。 –