0

URLクエリにも使用するurlopenことは明らかです。私が試したのは:

import urllib2
query='http://www.onvista.de/aktien/snapshot.html?ID_OSI=86627'
f = urllib2.urlopen(query)
s = f.read()
f.close()

ただし、この特定の URL クエリでは、HTTP エラー 403 禁止で失敗します。このクエリをブラウザに入力すると、機能します。また、http://www.httpquery.com/を使用してクエリを送信する場合も機能します。

正しい応答を取得するために Python を正しく使用する方法について提案はありますか?

4

2 に答える 2

3

Cookie が必要なようですが (urllib2 で実行できます)、より簡単な方法は、リクエストを使用することです。

import requests
session = requests.session()
r = session.get('http://www.onvista.de/aktien/snapshot.html?ID_OSI=86627')

これは一般に、Python で URL を取得する方法として、はるかに簡単でストレスが少ない方法です。

requestsは自動的に Cookie を保存して再利用します。ここでセッションを作成するのは少しやり過ぎですが、ログインページなどにデータを送信する必要がある場合や、サイト全体で Cookie を再利用する必要がある場合などに役立ちます...

urllib2 の使用は次のようなものです

import urllib2, cookielib

cookies = cookielib.CookieJar()
opener = urllib2.build_opener( urllib2.HTTPCookieProcessor(cookies) )
data = opener.open('url').read()
于 2012-12-16T22:13:13.197 に答える
2

urllib2のデフォルトのユーザーエージェントがホストによって禁止されているようです。独自のユーザーエージェント文字列を指定するだけです。

import urllib2
url = 'http://www.onvista.de/aktien/snapshot.html?ID_OSI=86627'
request = urllib2.Request(url, headers={"User-Agent" : "MyUserAgent"})
contents = urllib2.urlopen(request).read()
print contents
于 2012-12-16T22:20:49.933 に答える