问题描述
我正在尝试使用硒抓取一个网站,并且在大多数情况下都可以。 我现在遇到了一个问题...我正在刮擦赛马网站,并希望将我的结果存储在字典中以备后用。 我想要这样的东西...
print race ['WH'] [venue] [time],它将返回一个链接到该特定比赛时间的网址。
我已经刮擦了场地,时间和网址,可以按顺序打印它们,等等。这是我到目前为止的内容
for meet in meetings:
if meet.get_attribute('class') == 'bold':
venue=meet.text
#race['WH'] = venue
#print '{id} - Venue: {venue}'.format(id=i, venue=venue)
race['wh'][venue] = ' '
else:
try:
anchor = meet.find_element_by_tag_name('a')
text = anchor.text
link = link = anchor.get_attribute('href')
#print 'link: {rid}, Time: {text}'.format(rid=r, link = anchor.get_attribute('href'), text = text)
tim[venue][text] = link
race['wh'] = tim
except NoSuchElementException:
pass # Are you worried if something is neither a title (bold) nor contains an anchor?
# race['WH'][venue] = list
print race['wh']['Ayr']
基本上,脚本会遍历标签,如果找到带有粗体类的元素,它将知道其位置。 然后尝试在每个场地下找到相应的比赛时间(确实如此)。 但是我一生无法将其设置为race ['WH'] [venue] [text]之类的格式,我希望能够调用它来查找特定种族的网址。 任何帮助,将不胜感激。
1楼
如果您知道访问模式将使用特定的键序列(例如场地->时间,那么您就不需要做时间->场地),那么简单的答案就是在命令中包含命令。
简化示例:
data = dict()
data['venue1'] = dict()
data['venue1']['time1'] = 'something'
print data
换句话说:没有多维字典之类的东西。 但是,您可以嵌套字典,并且只要您不必更改用于访问字典中条目的键,这就能很好地工作。 如果需要在不同情况下使用不同的键(更像是数据库查询),则将使用非常不同的方法。