2010-07-11 4 views
1

다른 웹 사이트를 쿼리하는 스크레이퍼가 있습니다. 그들 중 일부는 Content-Encoding을 다양하게 사용합니다. 그리고 AJAX 쿼리를 시뮬레이트하고 모질라를 모방 할 필요가 있기 때문에 전적으로 지원이 필요합니다. 파이썬을위한 다중 HTTP 라이브러리가 있지만 어느 것도 완성 된 것처럼 보이지 않습니다.콘텐츠 인코딩을 포함한 HTTP 지원을위한 Python 라이브러리

httplib은 HTTP 패킷 스니퍼와 매우 흡사합니다.

urllib2는 정교한 사기극입니다. 다양한 웹 클라이언트 기능을위한 12 개의 핸들러가 있지만 Content-Encoding과 같은 필수 HTTP 기능은 그렇지 않습니다.

mechanize : 좋은 일이지만 이미 내 작업에 다소 과용되어 있지만 CE 'gzip'만 지원합니다.

httplib2 : 가장 유망한 것으로 들리지만 실제로는 'deflate'인코딩에 실패합니다. 왜냐하면 생축과 zlib 스트림의 불균형 때문입니다.

다른 옵션이 있습니까? 위의 라이브러리에 대한 대안을 다시 구현할 것으로 예상됩니다. 그리고 패치 된 버전을 내 응용 프로그램과 함께 배포하는 것은 좋지 않습니다. 패키지 관리자가 해당 라이브러리를 별도의 배포 패키지로 사용할 수있는 경우 다시 패키지를 제거 할 수 있기 때문입니다.

저는 거의 말할 수 없지만, PHP의 http 함수 API는 훨씬 좋네요. 그리고 Content-Encoding : * 외에도 multipart/form-data도 필요할 수도 있습니다. 그렇다면 http 검색을위한 포괄적 인 타사 라이브러리가 있습니까?

+1

두 번째 질문은 http://stackoverflow.com/questions/680305/using-multipartposthandler-to-post-form-data-with-python – Metalshark

+0

의 복제물입니다. @Metalshark : 포스터 모듈은 멋지고 단순 해 보입니다. 북마크 됨. 감사! – mario

답변

1

cURL의 하위 프로세스를 호출하거나 python bindings for libcurl을 사용하는 것이 좋습니다.

this description부터 cURL은 gzip을 지원하고 수축됩니다.

+0

나는 cmdline 작업을 위해 wget보다 wget을 선호하기 때문에 PycURL 또한 비표준 확장이기 때문에 약간의 소극적이었습니다. 하지만 아마도 가장 성숙하고 기능이 완벽한 솔루션 일 것입니다. 정말 최고의 선택입니다. – mario

-1

Beautiful Soup 일 수 있습니다. 그냥 거기 던져.

+0

BeautifulSoup은 HTML 및 유사한 마크 업을 구문 분석하기위한 것입니다. 그것은 HTTP를 다루지 않습니다. –

관련 문제