0

だから私はPythonを使って508コンプライアンスチェックを自動化しようとしています。当サイトには数百ページありますが、現時点では毎週実際にサイトを閲覧し、すべてのURLを手作業で入力しようとしています。以下のUIUCリンクは、リファラーヘッダーのリクエストをチェックしてから、そのサイトの評価を返します。実際に動作するようにリクエストを取得できません。私はSOをすべて調べましたが、役立つものは何も見つかりません。厄介なコードは、そのエラーメッセージの下と下にあります。

def fae(urltofae):
opener = urllib2.build_opener()
opener.addheaders = [('User-agent', 'Mozilla/5.0')]
#[('Referer': urltofae)]
r = opener.open('http://www.fae.cita.uiuc.edu/evaluate/link/')
print r
fae("http://www.example.com/")

そしてエラー:

  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in fae
  File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/urllib2.py", line 400, in open
    response = self._open(req, data)
  File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/urllib2.py", line 418, in _open
    '_open', req)
  File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/urllib2.py", line 378, in _call_chain
    result = func(*args)
  File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/urllib2.py", line 1207, in http_open
    return self.do_open(httplib.HTTPConnection, req)
  File "/Library/Frameworks/Python.framework/Versions/7.3/lib/python2.7/urllib2.py", line 1177, in do_open
    raise URLError(err)
urllib2.URLError: <urlopen error [Errno 8] nodename nor servname provided, or not known>

そして、(ユーザーエージェントの代わりに)リファラーヘッダーを変更しようとすると、フォーマットがユーザーに文句を言わなかったものと同じであっても、リクエストに到達するのではなく、フォーマットエラーが発生します-エージェント。

私はまだ非常に新しいプログラマーなので、露骨なものが欠けている場合は、ひどく申し訳ありませんが、私は考えられるすべてのことを試みました。よろしくお願いします。


OK、それで私は戦略を切り替えました、そしてそれはうまくいきました。残念ながら、以下のコードが機能する理由がわかりません。上記のものでエラーが発生し続けましたが、グーグルの周りに似たような質問(具体的な回答はありません)がいくつか見られたので、投稿する必要があると思いました。

vlz、助けてくれてありがとう、乾杯。

def faeRequest2(urltofae):
    r = urllib2.Request('http://fae.cita.illinois.edu/evaluate/link/', headers={'User-agent':'Mozilla/5.0', 'Referer':urltofae})
    c = urllib2.urlopen(r)
    print c.read()
4

1 に答える 1

1

そこにエラーは見当たりません。URLは正しいですか?使ってみてください

'http://fae.cita.uiuc.edu/evaluate/link/'

それ以外の

'http://www.fae.cita.uiuc.edu/evaluate/link/'

後者はどこにも通じていないようです。

于 2013-03-27T06:51:55.367 に答える