Web sayfası BeautifulSoup'a yüklenmediğinde nasıl kullanılır

Şu anda web sayfası alınırken bir hata olması durumunda çorba sayfa ile doldurulmayacak ancak beautifulsoup'dan varsayılan getiri elde edecek.

Bunu kontrol etmenin bir yolunu arıyorum, böylece web sayfasını aldığımda bir hata varsa,

if soup:
  do stuff

ama hep birlikte feshetmek istemiyorum. Acemi sorgulama için dilekler.

def getwebpage(address):
  try:
      user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
      headers = { 'User-Agent' : user_agent }
      req = urllib2.Request(address, None, headers)
      web_handle = urllib2.urlopen(req)
  except urllib2.HTTPError, e:
      error_desc = BaseHTTPServer.BaseHTTPRequestHandler.responses[e.code][0]
      appendlog('HTTP Error: ' + str(e.code) + ': ' + address)
      return
  except urllib2.URLError, e:
      appendlog('URL Error: ' + e.reason[1] + ': ' + address)
      return
  except:
      appendlog('Unknown Error: ' + address)
      return
  return web_handle


def test():
  soup = BeautifulSoup(getwebpage('http://doesnotexistblah.com/'))
  print soup

  if soup:
    do stuff

test()
1

2 cevap

Kodun yapısını, tek bir fonksiyonun, url'den veri alma sürecinin tamamını ve bu verilerin işlenmesini kapsülleyen bir başkasını kapsüller.

import urllib2, httplib
from BeautifulSoup import BeautifulSoup

def append_log(message):
    print message

def get_web_page(address):
    try:
        user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
        headers = { 'User-Agent' : user_agent }
        request = urllib2.Request(address, None, headers)
        response = urllib2.urlopen(request, timeout=20)
        try:
            return response.read()
        finally:
            response.close()
    except urllib2.HTTPError as e:
        error_desc = httplib.responses.get(e.code, '')
        append_log('HTTP Error: ' + str(e.code) + ': ' +
                  error_desc + ': ' + address)
    except urllib2.URLError as e:
        append_log('URL Error: ' + e.reason[1] + ': ' + address)
    except Exception as e:
        append_log('Unknown Error: ' + str(e) + address)

def process_web_page(data):
    if data is not None:
        print BeautifulSoup(data)
    else:
        pass # do something else

data = get_web_page('http://doesnotexistblah.com/')
process_web_page(data)

data = get_web_page('http://docs.python.org/copyright.html')
process_web_page(data)
2
katma
soup = getwebpage('http://doesnotexistblah.com/')
if soup is not None:
    soup = BeautifulSoup(soup)

İstediğin bu mu?

0
katma
getwebpage sayfasından geri dönün olduğunda, bu Hiçbiri .
katma yazar Chris Morgan, kaynak
Evet ve hayır, istediğim şey bu, ama çorba asla hayır, hatta kötü bir adresle beslendiğinde bile ...
katma yazar Brad, kaynak