Urllib2 Python-重新连接和拆分响应

用户名

我正从其他语言转向Python,但不确定如何正确解决此问题。使用urllib2库,很容易设置代理并从站点获取数据:

import urllib2

req = urllib2.Request('http://www.voidspace.org.uk')
response = urllib2.urlopen(req)
the_page = response.read()

我的问题是,检索到的文本文件非常大(数百MB),并且连接经常有问题。该代码还需要捕获连接,服务器和传输错误(它将成为广泛使用的小型管道的一部分)。

谁能建议如何修改上面的代码,以确保代码自动重新连接n次(例如100次),并可能将响应分成多个块,以便更快,更可靠地下载数据?

我已经尽可能多地拆分了请求,因此现在必须确保检索代码尽可能的好。基于核心python库的解决方案是理想的。

也许库已经在执行上述操作了,在这种情况下,有什么方法可以改善大文件的下载?我正在使用UNIX,需要处理代理。

谢谢你的帮助。

沉默的根

您可以尝试这样的事情。它逐行读取文件并将其附加到文件中。它还会检查以确保您不会越过同一行。我还要编写另一个脚本,也可以按块执行。

import urllib2
file_checker = None
print("Please Wait...")
while True:
    try:
        req = urllib2.Request('http://www.voidspace.org.uk')
        response = urllib2.urlopen(req, timeout=20)
        print("Connected")
        with open("outfile.html", 'w+') as out_data:
            for data in response.readlines():
                file_checker = open("outfile.html")
                if data not in file_checker.readlines():
                    out_data.write(str(data))
        break
    except urllib2.URLError:
        print("Connection Error!")
        print("Connecting again...please wait")
file_checker.close()
print("done")

这是分块而不是按行读取数据的方法

import urllib2

CHUNK = 16 * 1024
file_checker = None
print("Please Wait...")
while True:
    try:
        req = urllib2.Request('http://www.voidspace.org.uk')
        response = urllib2.urlopen(req, timeout=1)
        print("Connected")
        with open("outdata", 'wb+') as out_data:
            while True:
                chunk = response.read(CHUNK)
                file_checker = open("outdata")
                if chunk and chunk not in file_checker.readlines():
                 out_data.write(chunk)
                else:
                    break
        break
    except urllib2.URLError:
        print("Connection Error!")
        print("Connecting again...please wait")
file_checker.close()
print("done")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Python urllib2 响应

来自分类Dev

python urllib2和unicode

来自分类Dev

urllib2和HTTPErrorProcessor Python 3

来自分类Dev

python使用urllib2和urllib获取请求问题

来自分类Dev

使用Urllib2和virtualenv的Python Anywhere问题

来自分类Dev

Python:Tkinter按钮功能和urllib2

来自分类Dev

您如何使用urllib2(和urllib)python将cookie发送到网站?

来自分类Dev

Tor + Urllib2 Python

来自分类Dev

二进制的Python 2.7.3 urllib2 urlopen响应

来自分类Dev

需要为 Python 2.7 重新安装 urllib2

来自分类Dev

使用Beautiful Soup,urllib2和Python抓取PHP变量

来自分类Dev

使用Beautiful Soup,urllib2和Python抓取PHP变量

来自分类Dev

python urllib2和ntlm-在响应html中获取“ <h1>对象已移动</ h1>”

来自分类Dev

python urllib2和ntlm-在响应html中获取“ <h1>对象已移动</ h1>”

来自分类Dev

Python urllib2中的语法问题?

来自分类Dev

Python:使用urllib2登录Moodle

来自分类Dev

python忽略证书验证urllib2

来自分类Dev

python urllib2返回垃圾

来自分类Dev

Syntax Issue in Python urllib2?

来自分类Dev

Python:Urllib2返回404

来自分类Dev

Python urllib2不遵守超时

来自分类Dev

Python Urllib2 SSL错误

来自分类Dev

Python urllib2请求错误

来自分类Dev

Python urllib2的奇怪输出

来自分类Dev

使用urllib2的Python追溯错误

来自分类Dev

使用urllib2检查响应

来自分类Dev

Urllib2和JSON对象错误

来自分类Dev

使用ruby(而不是python)连接到Microsoft Azure Machine Learning Studio Api,使用net / http gem代替urllib2

来自分类Dev

如何找到像使用Python urllib2和漂亮的汤类库的网页一样的tweets / facebook数量?