Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
@yasusuzu602
Revisions
Report this question
Subscribe question
Help us understand the problem. What is going on with this question?
Q&A

スクレイピング処理のエラーをスキップして処理を続けたい

勉強不足、理解不足ですみません。スクレピングのプログラムをつくりました。URLの末尾
~/detail.php?id={}'の数字をfor文で変更して連続して処理をするのですが
途中でエラーが出て処理が止まるので、エラーのある箇所を飛ばして、処理を続けたいのです。
よろしくお願いいたします。

発生している問題・エラー

---------------------------------------------------------------------------
IndexError                                Traceback (most recent call last
     13 
     14             td_tags = soup.find_all('td')
---> 15             td_01 = td_tags[10].text
     16             td_02 = td_tags[12].text
     17             d = {'td_01': td_01, 

``



### 該当するソースコード
for i in range(30260,30270):
    print('d_listみる:', len(d_list))
    # 変数target_urlに、アクセス先のURLを格納する
    target_url = url.format(i)

    # print()してtarget_urlを確認する
    print(target_url)

    # 2. `Requests`を使って設定したURLにアクセスする
    r = requests.get(target_url)

    sleep(1)

    # 取得結果を解析してsoupに収納
    soup = BeautifulSoup(r.text)
    # 設定したtd_tagsへ収納
    td_tags = soup.find_all('td')

    td_01 = td_tags[10].text
    td_02 = td_tags[12].text
    d = {'td_01': td_01,  
         'td_02': td_02,  
        }

    d_list.append(d)
    print(d)

この流れで、対象のURLに30265番が欠損しており、td_tagsを作れないのでエラーが出ているとおもうのですが
URLの欠損値をどんどん飛ばしてfor文を回したいのです。
```

自分で試したこと

if IndexError: else とかで続けていけるような気がするのですが、よくわからず、困っております
どなたか、アイディアをいただけますと幸いです
よろしくお願いいたします。

0
1
Answer
Report this answer
### 該当するソースコード
for i in range(30260,30270):
    # 中略
    try:
        td_01 = td_tags[10].text
        td_02 = td_tags[12].text
        d = {'td_01': td_01,  
             'td_02': td_02,  
            }
    except:
        print('Ignored ID=' + str(i))
        continue
    # 後略

よろしくお願い申し上げます

0
ご回答ありがとうございます。
例外処理ですね まずは勉強して試してみます
ありがとうございました。
try:
 処理
except IndexError :
print('Ignored ID=' + str(i))
continue
うまくいきました。!!!うれしいです。スムーズに動いて画面をじっとみてしまいました。
例外処理について、わすれません
ジュピターラボのエラーメッセージにヒントがあることも気づきました
ありがとうございました。
View the remaining 1 comments.
Help us understand the problem. What is going on with this answer?
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login