findAll()
リストをチャンクに分割する関数とともに を使用できます
>>> areatable = soup.find('table',{'id':'codes'})
>>> d = {}
>>> def chunks(l, n):
... return [l[i:i+n] for i in range(0, len(l), n)]
>>> dict(chunks([i.text for i in areatable.findAll('td')], 2))
{u'Chunan': u'36', u'Penghu': u'69', u'Wufeng': u'4', u'Fengyuan': u'4', u'Kaohsiung': u'7', u'Changhua': u'47', u'Pingtung': u'8', u'Keelung': u'2', u'Hsinying': u'66', u'Chungli': u'34', u'Suao': u'39', u'Yuanlin': u'48', u'Yungching': u'48', u'Panchiao': u'2', u'Taipei': u'2', u'Tainan': u'62', u'Peikang': u'5', u'Taichung': u'4', u'Yungho': u'2', u'Hsinchu': u'35', u'Tsoying': u'7', u'Hualien': u'38', u'Lukang': u'47', u'Talin': u'5', u'Chiaochi': u'39', u'Fengshan': u'7', u'Sanchung': u'2', u'Tungkang': u'88', u'Taoyuan': u'33', u'Hukou': u'36'}
説明:
.find()
の ID を持つテーブルを検索しますcodes
。このchunks
関数は、リストを均等なサイズのチャンクに分割するために使用されます。
リストを返すようfindAll
に、リストのチャンクを使用して次のようなものを作成します。
[[u'Changhua', u'47'], [u'Keelung', u'2'], etc]
i.text for i in...
td
各タグのテキストを取得するために使用されます。それ以外の場合は<td>
and</td>
が残ります。
最後に、dict()
が呼び出されて、リストのリストがディクショナリに変換されます。このディクショナリを使用して、国の市外局番にアクセスできます。