linklists = ['www.right1.com', www.right2.com', 'www.wrong.com', 'www.right3.com']
并且每个right1,right2和right3的html的形式是:
<html>
<p>
hi
</p>
<strong>
hello
</strong>
</html>
和www.wrong.com html的形式是(实际的html要复杂得多):
<html>
<p>
hi
</p>
</html>
我正在使用这样的代码:
from BeautifulSoup import BeautifulSoup
stronglist=[]
for httplink in linklists:
url = httplink
page = urllib2.urlopen(url)
html = page.read()
soup = BeautifulSoup(html)
findstrong = soup.findAll("strong")
findstrong = str(findstrong)
findstrong = re.sub(r'\[|\]|\s*<[^>]*>\s*', '', findstrong) #remove tag
stronglist.append(findstrong)
我想做的是:
从列表'linklists'
在<strong>
将它们添加到列表'stronglist'
但问题是:
有一个错误的链接(www.wrong.com
)没有。
然后代码说错误......
我想要的是异常处理(或其他),如果链接没有“强”字段(它有错误),我希望代码将字符串'null'添加到强列表,因为它可以从链接中获取数据。
我一直在使用'如果要解决这个问题,但这对我来说有点困难
有什么建议吗?
答案 0 :(得分:1)
无需使用异常处理。只需确定findAll方法何时返回空列表并处理它。
from BeautifulSoup import BeautifulSoup
strong_list=[]
for url in link_list:
soup = BeautifulSoup(urllib2.urlopen(url).read())
strong_tags = soup.findAll("strong")
if not strong_tags:
strong_list.append('null')
continue
for strong_tag in strong_tags:
strong_list.append(strong_tag.text)