de-vraag
  • 質問
  • タグ
  • ユーザー
通知:
報酬:
登録
登録すると、質問に対する返答やコメントが通知されます。
ログイン
すでにアカウントをお持ちの方は、ログインして新しい通知を確認してください。
追加された質問、回答、コメントには報酬があります。
さらに
ソース
編集
 Brad
Brad
質問

BeautifulSoupにWebページがロードされない場合の処理​​方法

現在、Webページを取得中にエラーが発生した場合、スープはページに埋め込まれませんが、beautifulsoupからのデフォルトの戻り値を取得します。

私はこれをチェックする方法を探しているので、Webページを取得する際にエラーが発生した場合は、次のようなコードをスキップすることができます

if soup:
  do stuff

私はすべて一緒に終わらせたくありません。初心者のお誘いのためのお申し込み。

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()
2 2011-10-27T21:02:02+00:00 2
 NullUserException
NullUserException
編集された質問 27日 10月 2011 в 9:02
プログラミング
python
beautifulsoup
ekhumoro
28日 10月 2011 в 12:29
2011-10-28T00:29:55+00:00
さらに
ソース
編集
#56793158

ある関数がurlからのデータ取得のプロセス全体をカプセル化し、もう一方の関数がそのデータの処理をカプセル化するように、コードを構造化します。

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
0
Chris Morgan
27日 10月 2011 в 9:49
2011-10-27T21:49:48+00:00
さらに
ソース
編集
#56793157
soup = getwebpage('http://doesnotexistblah.com/')
if soup is not None:
    soup = BeautifulSoup(soup)

それはあなたが欲しいものですか?

0
0
質問の追加
カテゴリ
すべて
技術情報
文化・レクリエーション
生活・芸術
科学
プロフェッショナル
事業内容
ユーザー
すべて
新しい
人気
1
Денис Анненский
登録済み 1日前
2
365
登録済み 5日前
3
True Image
登録済み 6日前
4
archana agarwal
登録済み 1週間前
5
Maxim Zhilyaev
登録済み 1週間前
© de-vraag :年
ソース
stackoverflow.com
ライセンス cc by-sa 3.0 帰属