0

私を夢中にさせている問題があります。多くの URL を取得するために urllib2 を使用しています。HTMLページ全体が返される場合と返されない場合があるURLがあります。これは私のコードです:

def find_html(url):
    req = urllib2.Request(url)
    req.add_header('User-Agent', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB;   rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14')
    page_html = urllib2.urlopen(req).read()

    n = string.find(page_html, "filter clearfix active")
    print "find element:",n

url = "http://it.hotels.com/ho113127/rome-cavalieri-waldorf-astoria-hotels-resorts-roma-italia/"
find_html(url)

なぜこうなった?私はどこで間違っていますか?(この URL にはセレンを使用したくなく、urllib2 を使用したい)

4

1 に答える 1

4

その URL から200 と 301 ( Moved Permanently) の両方の応答を受け取っているので、これはサーバーの問題です。

は自動的にリダイレクトをたどるのでurllib2、リダイレクトされたページを処理したくない場合は、リダイレクトが発生したかどうかを確認する必要があります (正しく理解している場合、必要な情報が含まれていません)。

...
response = urllib2.urlopen(req)
if response.geturl() == url:
  // no redirect occurred
else:
  // a redirect occurred because the url has changed

正確な設定と、それをどのように処理する必要があるかは、意図によって異なります (一部の URL では、リダイレクトされたページを実際に処理したい場合があるため)。

于 2013-03-13T11:29:08.147 に答える