Python 为什么从页面检索到的文本有时看起来像胡言乱语?

Python 为什么从页面检索到的文本有时看起来像胡言乱语?,python,urllib2,urllib,urlopen,Python,Urllib2,Urllib,Urlopen,我在Python中使用urllib和urllib2来打开和阅读网页,但有时,我得到的文本是不可读的。例如,如果我运行以下命令: import urllib text = urllib.urlopen('http://tagger.steve.museum/steve/object/141913').read() print text from selenium import selenium s = selenium("localhost", 4444, "*chrome", "http:/

我在Python中使用urllib和urllib2来打开和阅读网页,但有时,我得到的文本是不可读的。例如,如果我运行以下命令:

import urllib

text = urllib.urlopen('http://tagger.steve.museum/steve/object/141913').read()
print text
from selenium import selenium
s = selenium("localhost", 4444, "*chrome", "http://tagger.steve.museum")
s.start()

s.open("/steve/object/141913")

text = s.get_html_source()
print text
我收到一些不可读的文本。我读过这些帖子:

但似乎找不到我的答案

提前感谢您的帮助


更新:我通过“说服”服务器我的用户代理是一个浏览器而不是爬虫程序来修复这个问题

import urllib

class NewOpener(urllib.FancyURLopener):
  version = 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/535.2 (KHTML, like Gecko) Ubuntu/11.10 Chromium/15.0.874.120 Chrome/15.0.874.120 Safari/535.2'

nop = NewOpener()
html_text = nop.open('http://tagger.steve.museum/steve/object/141913').read()

谢谢大家的回复。

这是服务器对
请求的真实响应http://tagger.steve.museum/steve/object/141913“
。实际上,它看起来像是模糊的JavaScript,如果由浏览器执行,它将加载页面内容

要获得这些内容,您需要执行这个JavaScript,而这在Python中可能是一个非常困难的任务。如果您仍然想这样做,请查看。

您可以使用来获取内容。下载服务器和客户端驱动程序,运行服务器并运行以下操作:

import urllib

text = urllib.urlopen('http://tagger.steve.museum/steve/object/141913').read()
print text
from selenium import selenium
s = selenium("localhost", 4444, "*chrome", "http://tagger.steve.museum")
s.start()

s.open("/steve/object/141913")

text = s.get_html_source()
print text

urlopen(youUrl)的结果是一个Javascript。这个脚本真的是你想要得到的内容吗?还是你想要得到网页的实际内容(显示浏览器的内容)?谢谢joshz!事实证明,我需要Selenium,因为我需要先执行javascript,然后才能以您在浏览器中看到的方式查看页面源代码。一个简单的问题:如果我在交互式python解释器上运行上面的脚本,它将非常有效。但是如果我将它存储在一个文件中并一起运行,它会发现语法错误!你知道这可能是什么原因吗?不知道是什么错误,我用Python 2.7.2从一个文件运行了它。我的最佳猜测是,当从文件运行时,它使用不同的Python版本。它神奇地修复了自己!我不知道是什么导致了这个问题!谢谢你的建议!