返回我有一個簡單的功能的Python代理:修改頁面內容由urllib2.urlopen
import SocketServer, SimpleHTTPServer, urllib, re
PORT = 80
class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
page = urllib.urlopen(self.path)
self.copyfile(page, self.wfile)
httpd = SocketServer.ForkingTCPServer(('', PORT), Proxy)
print "serving at port", PORT
httpd.serve_forever()
可正常工作。但是我遇到了返回類型爲urlopen
的問題。
如果我修改類這樣:
class Proxy(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
page = urllib.urlopen(self.path)
print page.read() # NEW LINE
self.copyfile(page, self.wfile)
我可以成功地打印頁面的HTML內容,但隨後page
是空的(空隙被轉發給客戶端)。
我不明白爲什麼.read()
會清空file-type object
。
爲了解決這個問題我想重新寫的內容:
content = page.read()
print page.read()
page.write(content)
但很顯然,這種文件類型的對象不具有write
方法。
如何讀/寫這個文件類型的對象,並仍然返回一個有效的頁面到我的客戶端?
+1謝謝!關於如何寫入文件的任何想法?例如,一個禁止網站,我只想返回「你看不到這個」。 – Juicy 2014-10-28 00:10:23
事實上,事實證明你的方法不起作用。該對象中沒有查找方法,而您的其他解決方案也有同樣的問題。數據然後是空的。 – Juicy 2014-10-28 00:36:22