83514


Webスクレイピングで取得したIDが複数で出力されるので、リスト化後、特定のIDを取得したいです。

実現内容

[code]

    ["12345","21234","22456"]
    
[/code]

取得したいリストから `[1]` を指定して21234のIDを取得したいです。

下記のコードで行いましたが、上手く出力結果の **21234** を取得できず、エラーします。

どなたかご教授いただけると幸いです。

よろしくお願いします。

code

[code]

    # BeautifulSoupから取得するID　WEBページにHOUSE用語が含んでいましたら、全てのID出力
    for i in soup.find_all(class_=['text-box']):
        if 'HOUSE' in i.text: 
         find_id= [i.parent.parent.parent.get('id').split('-')[-1]]
    
    　　　　　　　　print(find_id)
    
    a=find_id[1]
    
    print(a)
    
[/code]

`print(find_id)` の結果

[code]

    ['12345']
    ['21234']
    ['22456']
    
[/code]

変数aからIDを取得したプログラムを組みましたが、print(a)がエラーメッセージします。

[code]

    a=find_id[1]
    IndexError: list index out of range
    
[/code]


CC BY-SA 4.0
2021-11-09T07:12:56.167
83511
2021-11-09T08:03:11.043
2021-11-09T07:59:12.730
18859
18859
question
python python3
Pythonで複数の出力結果から特定のIDを取得したい


それはありえないですね。print(find_id)の結果からNameErrorが発生するはずです。

print(find_id)  
は、もしかしたらfind_id=...のすぐ下になっていないでしょうか？

[code]

    ids = []
    for i in soup.find_all(class_=['text-box']):
        if 'HOUSE' in i.text: 
         ids += [i.parent.parent.parent.get('id').split('-')[-1]]
    
    print(ids[1])
    
[/code]


CC BY-SA 4.0
2021-11-09T07:40:55.613
83514
2021-11-09T08:03:11.043
2021-11-09T08:03:11.043
49006
49006
83511
answer