2012-09-26 4 views
1

전반적인 목표는 컨테이너 값이 CMAU1173561 인 http://www.cma-cgm.com/eBusiness/Tracking/Default.aspx 웹 페이지에서 검색을 수행하는 것입니다. 나는 php 확장자 인 cURL과 파이썬이 기계화 된 두 가지 방법을 시도했다. 접근 PHP는 페이지에서 발견 된 입력 필드를 사용하여 POST 수행을 포함합니다 (참고 : 이것은 asp.net 페이지에서 실제로보기 흉합니다). 반환 된 페이지에는 검색 결과가 없습니다. 두 번째 방법은 python의 mechanize 모듈을 사용하는 것입니다. 이 방법에서는 페이지를로드하고 양식을 선택한 다음 텍스트 필드 ctl00 $ ContentPlaceBody $ TextSearch를 컨테이너 값으로 변경합니다. 응답을 다시로드 할 때 검색 결과가 없습니다.까다로운 asp.net 페이지에 대한 웹 스크랩

나는 정말로 막 다른 길이다. 그것은 내 다음 단계를 스탠드 asp.net expertm되기 때문에 모든 도움을 주셔서 감사합니다 감사합니다.

+0

PHP cURL 요청을 만들 때 숨겨진 __VSTATE 매개 변수를 보냈습니까? 웹 서버는 다른 양식 데이터의 유효성을 확인하기 위해이를 요구합니다. – Skizz

답변

0

그 페이지의 소스는 거대한 viewstate (거대한 viewstate, 모든 곳의 테이블, 인라인 CSS, Word에서 복사 된 것처럼 보이는 스타일)이 무섭다.

관계없이 ... ASP.Net 양식은 다른 원시 양식과 동일한 원시 데이터를 서버로 전달합니다 (개발자에게 추상화되어 있음에도 불구하고).

요청에 따라 쿠키가 누락되었을 가능성이 큽니다. 검색 페이지 (또는 사이트의 일부)가 세션 상태를 사용하는 경우 ASP.Net 세션 쿠키가 요청에 포함되어야합니다. 이름에서 알 수 있습니다 ("asp.net"및 "session"포함).

페이지를 제출할 때 전체 나가는 요청을 보려면 Firebug 또는 Chrome과 같은 도구를 사용했다고 가정합니다. 내 빠른 테스트에서 요청은 POST가 아니라 GET으로 수행 될 수 있습니다. 양식을 제출하고 요청을보고 URL을 새 브라우저 창에 붙여 넣었습니다.

예 : http://www.cma-cgm.com/eBusiness/Tracking/Default.aspx?ContNum=CMAU1173561&T=57201202648

이것은 당신이해야 할 수 있습니다.

+0

GET 응답은 선적 정보를 반환하지 않습니다. 쿠키에 관해서는 능숙하게 파이썬에서 능 직물과 기계화를 모두 사용해 보았습니다. 둘 다 자동으로 쿠키를 처리하므로 문제라고 생각하지 않습니다. 이론과 실제로 응용 프로그램이 작동하는 사이에 큰 차이가있는 것으로 보이므로 작업 코드가 정말 만족 스러울 것입니다. – user1682331

관련 문제