2012-06-06 2 views
0

는이 사이트 방문 : http://www.avcodes.co.uk/airlcodesearch.asp긁어 데이터를 간단한 웹 사이트에서 '수'로 변경 '포스트'

을 그리고, 마지막 옵션 선택 :

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

그런 Submit.

I을 클릭합니다 Firefox의 Tamper Data 및 Live HTTP Headers를 사용하여 진행 상황을 모니터링했습니다.

그리고, 모두가 .. 잘 동일한 효과를 달성하는 데 필요한 직접 URL은 이것이다 : 위의 URL을 사용하는 경우

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

그러나 .. 데이터가 반환되지 않습니다.

무엇이 누락되었으며 올바른 URL을 찾는 방법은 무엇입니까?

이 실습의 목적은 일단 URL을 알고있는 것입니다. 파이썬 스크립트를 사용하여 A부터 Z까지 반복하고 모든 페이지의 내용을 가져옵니다.

도와주세요.

답변

6

웹 사이트에서 데이터베이스 사용 권한을 갖고 있으며 웹 사이트를 다룰 수있는 권한이 있다고 가정합니다. 다른 경우에는 관할권에 따라이를 수행하는 것이 불법 일 수 있습니다.

여기서 문제는 콘텐츠를 가져 오기 위해 GET을 사용하고 있지만 웹 사이트에서 POST를 기다리는 것입니다. Get과 POST는 일부 프로그래머가 동일하다고 생각하기는하지만 동일하지는 않습니다 (예를 들어, PHP에서는 $_GET$_POST 대신 $_REQUEST을 사용할 수 있습니다). 이 웹 사이트는 웹 사이트가 아니므로이 웹 사이트에 게시해야합니다.

파이썬에서,이 같은 URL로 데이터를 게시 할 수 있습니다 : 당신이 그 페이지의 POST 방법을 사용할 필요가 있기 때문이다

import urllib2 
u = urllib2.urlopen("http://www.avcodes.co.uk/airllistres.asp", "statuslst=Y&iataairllst=&icaoairllst=B&B1=Submit") 
print u.read() 
+0

고맙습니다 .. 그 작품들 !! 왜 질문에 강조 표시되어있는 방법을 수행하여 게시물을 기대하는 일부 웹 사이트에서 작업 할 수 있습니까? 그래서, 당신은 내가 이것에 의지 할 수 없다는 것을 말하고 있습니다 ... 맞습니까? – ihightower

+0

일부 웹 응용 프로그램은 쿼리 문자열의 값이나 POST rquest 본문의 값을 서로 바꾸어 사용할 수 있도록 작성되었습니다. 일부는 그렇지 않습니다. 앱에서 한 위치 또는 다른 위치에서 vaule을 찾으면 원하는 위치로 전달해야합니다. – kindall

2

POST와 GET은 동일하지 않습니다. 사이트가 GET 만 수락하도록 작성 되었다면 그게 전부입니다.

그러나 POST를 사용하는 스크립트를 쉽게 작성할 수 있습니다.

1

합니다.

이 시도 : 다음

pip install requests 

:

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

을 당신이 정말이를 얻기 위해 위의 쿼리 문자열 인수에 추가로 파악해야합니다 후 데이터가있는 것처럼 보인다 그러나 데이터를 반환하십시오.