0

私はこのサイトにアクセスしました: http ://www.avcodes.co.uk/airlcodesearch.asp

そして、最後のオプションを選択しました:

Select a letter for ICAO Codes: and chose "B"

次に、をクリックしますSubmit.

Firefoxの改ざんデータとライブHTTPヘッダーを使用して進行状況を監視しました。

そして、すべてが順調です..そして同じ効果を達成するために必要な直接URLはこれです:

http://www.avcodes.co.uk/airllistres.asp?statuslst=Y&iataairllst3%icaoairllst=B&B1=Submit

ただし、上記のURLを使用した場合、データは返されません。

何が欠けているのか、正しいURLを見つけるにはどうすればよいですか。

この演習の目的は、URLがわかったら、Pythonスクリプトを使用してAからZにループし、すべてのページのコンテンツを取得することです。

助けてください。

4

3 に答える 3

6

私はあなたが彼らのデータベースを使用する許可をウェブサイトから持っていて、あなたが彼らのウェブサイトをこすり取ることが許されていると仮定します。その他の場合、管轄によっては、これを行うことは違法となる可能性があります。

ここでの問題は、GETを使用してコンテンツを取得しているが、WebサイトがPOSTを予期していることです。GetとPOSTは同等ではありませんが、一部のプログラマーはそれらを同じと見なしています(たとえば、PHPでは、 and$_REQUESTの代わりに使用できます)。このウェブサイトは彼らとは違うので、このウェブサイトに投稿する必要があります。$_GET$_POST

Pythonでは、次のようなURLにデータを投稿できます。

import urllib2
u = urllib2.urlopen("http://www.avcodes.co.uk/airllistres.asp", "statuslst=Y&iataairllst=&icaoairllst=B&B1=Submit")
print u.read()
于 2012-06-06T15:07:03.213 に答える
2

POSTとGETは同等ではありません。サイトがGETのみを受け入れるように作成されている場合は、それだけで機能します。

ただし、POSTを使用するスクリプトを簡単に作成できます。

于 2012-06-06T15:05:23.340 に答える
1

これは、そのページでPOSTメソッドを使用する必要があるためです。

これを試して:

pip install requests

それで:

>>> import requests
>>> r = requests.post('http://www.avcodes.co.uk/airllistres.asp?statuslst=Y&iataairllst=&icaoairllst=B&B1=Submit')
>>> r.text

However it looks like there's post data you'll need to figure out in addition to the above query string arguments to get this to really return data.

于 2012-06-06T15:08:36.367 に答える