LoginSignup
yasusuzu602
@yasusuzu602 (やす すず)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

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

勉強不足、理解不足ですみません。スクレピングのプログラムをつくりました。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

1Answer

### 該当するソースコード
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

Comments

  1. @yasusuzu602

    Questioner
    ご回答ありがとうございます。
    例外処理ですね まずは勉強して試してみます
    ありがとうございました。
  2. @yasusuzu602

    Questioner
    try:
     処理
    except IndexError :
    print('Ignored ID=' + str(i))
    continue
    うまくいきました。!!!うれしいです。スムーズに動いて画面をじっとみてしまいました。
    例外処理について、わすれません
    ジュピターラボのエラーメッセージにヒントがあることも気づきました
    ありがとうございました。

Your answer might help someone💌