赞
踩
你有两个问题合并成一个,所以这里有一个部分的答案开始。第一个任务涉及HTML解析,所以让我们使用python库:requests和beautifulsoup4(如果还没有的话,pip安装beautifulsoup4)。在import requests
from bs4 import BeautifulSoup
r = requests.get('http://www.tamswithmark.com/shows/anything-goes-beaumont-1987/')
soup = BeautifulSoup(r.content, 'html.parser')
rows = soup.findAll('tr', {"class": "upcoming_performance"})
soup是页面内容的可导航数据结构。我们在soup上使用findAll方法来提取“tr”元素,类为“uncoming_performance”。行中的单个元素看起来像:
^{pr2}$
现在,让我们将这些行中的数据提取到我们自己的数据结构中。对于每一行,我们将为该性能创建一个字典。在
每个tr元素的data-*属性可通过字典键查找获得。在
可以使用.children(或.contents)属性访问每个tr元素内的'td'元素。在performances = [] # list of dicts, one per performance
for tr in rows:
# extract the data-* using dictionary key lookup on tr
p = dict(
lat=float(tr['data-lat']),
lng=float(tr['data-lng']),
zipcode=tr['data-zip']
)
# extract the td children into a list called tds
tds = [child for child in tr.children if child != "\n"]
# the class of each td indicates what type of content it holds
for td in tds:
key = td['class'][0] # get first element of class list
p[key] = td.string # get the string inside the td tag
# add to our list of performances
performances.append(p)
在这一点上,我们有一个字典的表演清单。每个dict中的键是:
纬度:浮动
液化天然气:浮式
邮政编码:str
城邦性能:str
绩效组织:str
等等
HTML提取完成。下一步是使用mappingapi服务,该服务将从所需位置到性能的lat/lng值进行比较。例如,您可以选择使用googlemaps地理编码API。这里有很多现有的回答问题,以指导你。在
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。