问题是-有一些不相关的li标记不包含您需要的数据。在
更具体一点。例如,如果您想获得“20世纪”事件的列表,请首先找到标题并从其父级的following ^{} sibling获取事件列表。此外,并非列表中的每个项目都有%B %d, %Y格式的日期-您需要通过try/except块来处理它:import urllib2
from datetime import datetime
from bs4 import BeautifulSoup
page1 = urllib2.urlopen("http://en.wikipedia.org/wiki/List_of_human_stampedes")
soup = BeautifulSoup(page1)
events = soup.find('span', id='20th_century').parent.find_next_sibling('ul')
for event in events.find_all('li'):
try:
date_string, rest = event.text.split(':', 1)
print datetime.strptime(date_string, '%B %d, %Y').strftime('%d/%m/%Y')
except ValueError:
print event.text
印刷品:
^{pr2}$
更新版本(获取所有低于一个世纪的ul组):events = soup.find('span', id='20th_century').parent.find_next_siblings()
for tag in events:
if tag.name == 'h2':
break
for event in tag.find_all('li'):
try:
date_string, rest = event.text.split(':', 1)
print datetime.strptime(date_string, '%B %d, %Y').strftime('%d/%m/%Y')
except ValueError:
print event.text