其他分享
首页 > 其他分享> > 使用BeautifulSoup提取表中的数据

使用BeautifulSoup提取表中的数据

作者:互联网

我正在为我的Android应用抓取此page.我想提取城市和区号表上的数据

这是我的代码:

from bs4 import BeautifulSoup
import urllib2
import re

base_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开发人员

解决方法:

您可以使用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的表.块功能用于将列表拆分为evenly sized chunks.

当findAll返回一个列表时,我们使用列表上的块创建类似以下内容的代码:

[[u'Changhua', u'47'], [u'Keelung', u'2'], etc]

i ….中的i.text用于获取每个td标签的文本,否则< td>和< / td>将保留.

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

标签:html-table,beautifulsoup,web-scraping,python
来源: https://codeday.me/bug/20191030/1970790.html