OS: OS X 10.10.4
Python:2.7.10
virtualenv環境
python初心者です。
とあるグルメサイトのクローラーを勉強として作成しています。
URLの末尾の数字をループして代入することによって特定地域のお店の名前、電話番号を書き出すという構成を考えて書いてみました。
coding=UTF-8
from bs4 import BeautifulSoup
import re
import urllib2
import sys
for num in range(48065,48070):
mise = "http://tabelog.com/tokyo/A1307/A130701/131" +str(num) +"/"
url = urllib2.urlopen(mise).read().decode('utf-8')
soup = BeautifulSoup(url, "html.parser")
name = soup.find_all(class_="display-name") [0].string
tel = soup.find_all(class_="tel-main")[0].string
print(soup.prettify())
print name
print tel
これの出力結果は
まんま屋
非公開
浜焼太郎 十条店
03-5948-5583
Traceback (most recent call last):
File "soup.py", line 14, in <module>
tel = soup.find_all(class_="tel-main")[0].string
IndexError: list index out of range
となり、tel-mainから配列が取得できないものはエラーになってしまい終了してしまいます。
これを「取得できなければ次へいく」という仕様にするにはどのようにすればよいでしょうか?
初歩的ですみませんがご回答お願いします。
また、最終的には地域を指定するURL部分もfor文で囲み、全国すべての店の情報を書き出せるようにするのが目標です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/07/16 10:55
2015/07/16 10:57
2015/07/16 11:39
2015/07/18 02:59
2015/07/18 05:05