python urllib2无法获得正确的网页

时间:2014-09-17 11:42:19

标签: python beautifulsoup web-crawler urllib2

我正在使用urllib2和beautifulsoup写蜘蛛。但我遇到了一些问题。

  1. 我无法正确下载网页。我试过了

    GET 'http://thesite.html'

    wget 'http://thesite.html'

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

  2. 在linux终端上,但得到了很多,似乎是错误的编解码器。

    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时,我收到了一条错误信息。
    5. 任何人都可以帮我这个吗?如何像网络浏览器一样获得正确的网页。

1 个答案:

答案 0 :(得分:0)

你在下载什么?它是文本还是二进制文件,例如一个图像?

二进制文件可能解释了为什么wget和curl等标准工具会返回大量“质量”(混乱?),而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}

Python 3中的字节字符串是什么样的?否则,如果您太腼腆地发布URL,追溯或其他详细信息,也许您可​​以发布一点该字符串?