同一ドメインの複数のURLから特定の値を取得したいと思います。
その際、共通のclassを元に、値の取得を考えておりますが、ページによっては該当のclassがありません。
textによってタグを外した状態で値を取得したいのですが、classがないページの値が含まれているため『object has no attribute'text'』とエラーが表示されます。
※エラーにならないページだけで取得した場合、またはtextを指定しなければエラーにはなりません。
取得した値は、タグを外した状態で、順番通りにlistに代入し、エラーの原因となるページに関しては、"none"などの文字列としてlistに代入したいと思っております。
エラーの問題を解決する方法をご教示いただけたら幸いです。
#試したこと兼、該当のソース
import requests
from bs4 import BeautifulSoup
import xlrd
import openpyxl
import time
import pandas as pd
from multiprocessing import Pool,cpu_count
all_urls = ['https://domain.com/a','https://domain.com/b','https://domain.com/c','https://domain.com/d']
csv_list = []
for url in all_urls:
time.sleep(1)
response = requests.get(url)
response.encoding = response.apparent_encoding
soup = BeautifulSoup(response.text, 'html.parser')
atag = soup.find('span',{"class" : "A"})
answer = atag.text
csv_list.append(answer)
#該当URLのソース例:https://domain.com/a
<span class="A">apple</span>
#該当URLのソース例:https://domain.com/b
※このページだけ該当のclassが存在しないという仮定です
#該当URLのソース例:https://domain.com/c
<span class="A">cat</span>
#該当URLのソース例:https://domain.com/d
<span class="A">diamond</span>
#取得後の目的とするリストの状態
csv_list =['apple','none','cat','diamond',]
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/21 09:49