我正在遍历每个处理日期(1 月 1 日、1 月 2 日、......、12 月 31 日)的维基百科页面。在每一页上,我都列出了那天过生日的人的名字。但是,在我的代码进行到一半时(4 月 27 日),我收到了以下警告:
WARNING:root:Some characters could not be decoded, and were replaced with REPLACEMENT CHARACTER.
然后,我马上得到一个错误:
Traceback (most recent call last):
File "wikipedia.py", line 29, in <module>
section = soup.find('span', id='Births').parent
AttributeError: 'NoneType' object has no attribute 'parent'
基本上,我无法弄清楚为什么在我一直到 4 月 27 日之后,它决定抛出这个警告和错误。这是4月27日的页面:
据我所知,没有什么不同可以让这种情况发生。还有一个 id="Births" 的跨度。
这是我调用所有这些东西的代码:
site = "http://en.wikipedia.org/wiki/"+a+"_"+str(b)
hdr = {'User-Agent': 'Mozilla/5.0'}
req = urllib2.Request(site,headers=hdr)
page = urllib2.urlopen(req)
soup = BeautifulSoup(page)
section = soup.find('span', id='Births').parent
births = section.find_next('ul').find_all('li')
for x in births:
#All the regex and parsing, don't think it's necessary to show
该错误在以下行中引发:
section = soup.find('span', id='Births').parent
到 4 月 27 日时,我确实掌握了很多信息(8 个列表,每个列表约 35,000 个元素),但我认为这不是问题。如果有人有任何想法,我将不胜感激。谢谢