为了账号安全,请及时绑定邮箱和手机立即绑定

使用BeautifulSoup提取表中的数据

使用BeautifulSoup提取表中的数据

www说 2021-03-12 12:08:09
我正在为我的Android应用抓取此页面。我想提取城市和区号表上的数据这是我的代码:from bs4 import BeautifulSoupimport urllib2import rebase_url = "http://www.howtocallabroad.com/taiwan/"html_page = urllib2.urlopen(base_url)soup = BeautifulSoup(html_page)codes = soup.select("#codes tbody > tr > td")for area_code in codes:    # print td city and area code我想知道python中的哪个函数或BeautifulSoup从中获取值的函数<td>value</td>对不起,一个学习编写python的android开发者
查看完整描述

1 回答

?
子衿沉夜

TA贡献1828条经验 获得超3个赞

您可以将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>和</td>将保留。


最后,dict()调用可以将列表列表转换为字典,您可以使用该字典来访问该国家的区号。


查看完整回答
反对 回复 2021-03-30
  • 1 回答
  • 0 关注
  • 293 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号