Python と Beautiful Soup で Web スクレイパーを作成しました
特定の要素が存在する場合もあれば、存在しない場合もあります。私はそれらのトンを持っています。「find」および/または「find_all」ごとにカスタム例外を設定することは、私にとって本当に意味がありません
スクレーパーが例外で停止しないように、エラーを無視したいだけです。私の端末からのエラー出力は次のとおりです。
Traceback (most recent call last):
File "listing-scraper.py", line 80, in <module>
'engine_size':soup.find("span",{"id":"infoEngine Size"}).contents[0],
AttributeError: 'NoneType' object has no attribute 'contents'
どうすれば続行できますか?
ここに私のソースコードの抜粋があります - あなたはそれがどのように設定されているかを見ることができます. (親切にしてください、私はPythonが初めてです)
dealer_info = {
'name':dealer_box.find("h4").contents[0],
'address':dealer_address,
'phone':re.sub(r'[^\d.]+','',soup.find("div",{"class":"PhoneNumber"}).contents[0]),
'logo':soup.find("div",{"class":"dealerLogo"}).img['src'],
'about':dealer_about,
'website':website,
'video':dealer_video
}
thumbnails = soup.find("div",{"class":"imageThumbs"}).find_all('img')
dealer_thumbnails = []
for thumbnail in thumbnails:
dealer_thumbnails.append(thumbnail['src'])
motorcycle = {
'insert_date':time.time() * 1000,
'year':soup.find("span",{"id":"infoYear"}).contents[0],
'make':soup.find("span",{"id":"infoMake"}).contents[0],
'model':soup.find("span",{"id":"infoModel"}).contents[0],
'type':soup.find("span",{"id":"infoType"}).contents[0],
'location':soup.find("span",{"id":"infoLocation"}).contents[0],
'color':soup.find("span",{"id":"infoColor"}).contents[0],
'engine_size':soup.find("span",{"id":"infoEngine Size"}).contents[0],
'description':description,
'price':soup.find("h3",{"class":"askingPriceNumber"}).contents[1],
'thumbnails':dealer_thumbnails,
'dealer_info':dealer_info
}
listing.update(motorcycle)