2014-09-17 14 views
-1

urllib2 및 beautifulsoup를 사용하여 거미를 쓰고 있습니다. 하지만 몇 가지 문제가 생깁니다.python urllib2가 올바른 웹 페이지를 가져올 수 없습니다.

  1. 웹 페이지를 제대로 다운로드 할 수 없습니다. 나는 리눅스 터미널에

    GET 'http://thesite.html' ,

    wget 'http://thesite.html',

    curl -O 'http://thesite.html',

을 시도했지만 많은 질량을 가지고, 잘못된 코덱처럼 보인다.

  1. 그런 다음 file_get_contents('http://thesite.html')을 사용해 보았지만 올바른 웹 페이지를 가져올 수 없습니다.

  2. 그런 다음 시도해 보니 urllib2.urlopen('http://thesite.html')을 사용할 수 없습니다.

  3. 인코딩을 검색 할 수 없습니다. s = urllib2.urlopen('http://thesite.html') print chardet.detect(s) 출력 {'confidence':0.0, 'encoding':None}
  4. 나는 또한 urllib.request와 python3을 시도, 나는 바이트 문자열을 얻을 수 있습니다,하지만 난이 UTF-8로 바이트를 디코딩 할 때, 나는 오류 메시지를 받았습니다.

누구나 도움이 될 수 있습니까? 웹 브라우저와 같은 올바른 웹 페이지를 얻는 방법.

+0

나는 두 가지 오류 메시지를 게시하는 것이 사람들이 당신의 문제를 이해하는 데 도움이 될 수 있다고 생각합니다. – isedev

+0

페이지가 사용자 에이전트를 거부합니다. 그것을 바꾸어보십시오. –

+0

나는 세부 사항을 게시하기에는 너무 어색한 도둑이되고 싶다. – xcaptain

답변

0

다운로드 하시겠습니까? 텍스트, 또는 바이너리와 같은 것입니까? 이미지?

바이너리 파일은 wget 및 curl과 같은 표준 도구가 많은 "질량"(mess?)을 반환하는 이유를 설명 할 수 있으며 chardet.detect()은이 경우 {'confidence': 0.0, 'encoding': None}을 반환합니다.

>>> import urllib2 
>>> import chardet 

>>> s = urllib2.urlopen('http://i.stack.imgur.com/uIM9Q.png?s=32&g=1').read() # your avatar 
>>> chardet.detect(s) 
{'confidence': 0.0, 'encoding': None} 

파이썬 3에서 얻은 바이트 문자열은 어떻게 생겼습니까? 그렇지 않으면 URL, 추적 또는 기타 세부 정보를 게시하기에는 너무 끈적한 경우 해당 문자열을 약간 게시 할 수 있습니까?

+0

자세한 답변을 해 주셔서 감사합니다. 나는 여전히이 문제를 해결하지 못했지만 일을 마치고 다른 사이트를 크롤링하도록 변경했으며 코딩 문제는 보지 못했습니다. 코딩이 웹 크롤링에 큰 문제라고 말해야합니다. 나는이 문제에 대해 더 자세히 설명하려고 노력할 것이다. – xcaptain

관련 문제