输入链接没有适当窗体时的异常处理

2024-05-07 11:32:52 发布

您现在位置:Python中文网/ 问答频道 /正文

例如,我有这样一个链接列表:

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.comhtml是(实际的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)

我想做的是:

  1. 通过列表中的html链接'linklists'

  2. <strong>

    之间查找数据
  3. 将它们添加到列表'stronglist'

但问题是: 有一个错误的链接(www.wrong.com)没有。 然后代码显示错误。。。你知道吗

我想要的是一个异常处理(或其他一些),如果链接没有“strong”字段(它有错误),我希望代码将字符串“null”添加到strong列表,因为它无法从链接获取数据。你知道吗

我一直在用“如果”来解决这个问题,但这对我来说有点困难

有什么建议吗?你知道吗


Tags: 代码com列表链接htmlwww错误strong
1条回答
网友
1楼 · 发布于 2024-05-07 11:32:52

不需要使用异常处理。只要确定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)

相关问题 更多 >