标签: urllib2

如何使用urllib2在python中下载zip文件?

两部分问题.我试图从互联网档案下载多个存档的Cory Doctorow播客.旧的那个没有进入我的iTunes提要.我编写了脚本,但下载的文件格式不正确.

Q1 - 我如何更改下载zip mp3文件?Q2 - 将变量传递到URL的更好方法是什么?

 # and the base url.

def dlfile(file_name,file_mode,base_url):
    from urllib2 import Request, urlopen, URLError, HTTPError

    #create the url and the request
    url = base_url + file_name + mid_url + file_name + end_url 
    req = Request(url)

    # Open the url
    try:
        f = urlopen(req)
        print "downloading " + url

        # Open our local file for writing
        local_file = open(file_name, "wb" + file_mode)
        #Write to our local file
        local_file.write(f.read())
        local_file.close()

    #handle errors
    except HTTPError, e: …
Run Code Online (Sandbox Code Playgroud)

python urllib2

30
推荐指数
1
解决办法
5万
查看次数

Python 3 urllib产生TypeError:POST数据应该是字节或可迭代的字节.它不能是str类型

我正在尝试将Python 2.7代码转换为Python 3代码,并且我从urllib请求模块收到类型错误.

我使用内置的2to3 Python工具转换下面的工作urllib和urllib2 Python 2.7代码:

import urllib2
import urllib

url = "https://www.customdomain.com"
d = dict(parameter1="value1", parameter2="value2")

req = urllib2.Request(url, data=urllib.urlencode(d))
f = urllib2.urlopen(req)
resp = f.read()
Run Code Online (Sandbox Code Playgroud)

2to3模块的输出是以下Python 3代码:

import urllib.request, urllib.error, urllib.parse

url = "https://www.customdomain.com"
d = dict(parameter1="value1", parameter2="value2")

req = urllib.request.Request(url, data=urllib.parse.urlencode(d))
f = urllib.request.urlopen(req)
resp = f.read()
Run Code Online (Sandbox Code Playgroud)

运行Python 3代码时,会产生以下错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-56-206954140899> in <module>()
      5 
      6 req = urllib.request.Request(url, data=urllib.parse.urlencode(d))
----> 7 f = urllib.request.urlopen(req)
      8 resp = f.read()

C:\Users\Admin\Anaconda3\lib\urllib\request.py in …
Run Code Online (Sandbox Code Playgroud)

python urllib urllib2 python-2.7 python-3.x

30
推荐指数
2
解决办法
4万
查看次数

如何使用django发送POST请求?

我不想使用html文件,但只有django我必须发出POST请求.

就像urllib2发送get请求一样.

python django urllib2

29
推荐指数
4
解决办法
5万
查看次数

失败时如何重试urllib2.request?

urllib2.request到达超时,一个urllib2.URLError异常.重试建立连接的pythonic方法是什么?

python urllib2 decorator

29
推荐指数
4
解决办法
3万
查看次数

Python urllib2 Progress Hook

我正在尝试使用urllib2 http客户端在python中创建下载进度条.我查看了API(以及谷歌),似乎urllib2不允许您注册进度挂钩.但是旧版已弃用的urllib确实具有此功能.

有谁知道如何使用urllib2创建进度条或报告钩子?或者是否有其他一些黑客可以获得类似的功能?

python http urllib2 httpclient progress-bar

28
推荐指数
3
解决办法
2万
查看次数

在Python 2.6之前的版本中,urllib2.urlopen()的超时

urllib2的文件说,超时参数是在Python 2.6增加.不幸的是,我的代码库已经在Python 2.5和2.4平台上运行.

有没有其他方法来模拟超时?我想要做的就是让代码在一段固定的时间内与远程服务器通话.

也许任何替代内置库?(不要像pycurl那样安装第三方)

python urllib2 urlopen

28
推荐指数
1
解决办法
2万
查看次数

UnicodeEncodeError:'ascii'编解码器不能编码字符u'\ u2026'

我正在学习urllib2和Beautiful Soup,并且在第一次测试时遇到如下错误:

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2026' in position 10: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

关于这种类型的错误似乎有很多帖子,我已经尝试了我能理解的解决方案,但似乎有22个跟他们一起,例如:

我想打印post.text(文本是一个美丽的汤方法,只返回文本). str(post.text)post.text产生unicode错误(如右撇号'...).

所以我在post = unicode(post)上面添加str(post.text),然后我得到:

AttributeError: 'unicode' object has no attribute 'text'
Run Code Online (Sandbox Code Playgroud)

我也试过(post.text).encode()(post.text).renderContents().后者产生错误:

AttributeError: 'unicode' object has no attribute 'renderContents'
Run Code Online (Sandbox Code Playgroud)

然后我尝试str(post.text).renderContents()并得到错误:

AttributeError: 'str' object has no attribute 'renderContents'
Run Code Online (Sandbox Code Playgroud)

如果我可以在文档的顶部定义某个位置'make this content 'interpretable''并仍然可以访问所需的text功能,那将是很棒的.


更新: 建议后:

如果我在post = post.decode("utf-8")上面添加,str(post.text) …

python unicode urllib2 beautifulsoup python-2.7

28
推荐指数
1
解决办法
5万
查看次数

Python请求:在单个请求中发布JSON和文件

我需要进行API调用以上传文件以及带有文件详细信息的JSON字符串.

我试图使用python请求lib来做到这一点:

import requests

info = {
    'var1' : 'this',
    'var2'  : 'that',
}

data = json.dumps({
    'token' : auth_token,
    'info'  : info,
})

headers = {'Content-type': 'multipart/form-data'}

files = {'document': open('file_name.pdf', 'rb')}

r = requests.post(url, files=files, data=data, headers=headers)
Run Code Online (Sandbox Code Playgroud)

这会引发以下错误:

    raise ValueError("Data must not be a string.")
 ValueError: Data must not be a string
Run Code Online (Sandbox Code Playgroud)

如果我从请求中删除"文件",它就可以了.
如果我从请求中删除"数据",它就可以工作.
如果我不将数据编码为JSON,则可以正常工作.

出于这个原因,我认为错误与在同一请求中发送JSON数据和文件有关.

关于如何使这个工作的任何想法?

python json urllib2

28
推荐指数
2
解决办法
4万
查看次数

如何在python中使用urllib2加速获取页面?

我有一个脚本,可以获取多个网页并解析信息.

(可以在http://bluedevilbooks.com/search/?DEPT=MATH&CLASS=103&SEC=01上看到一个例子)

我在它上面运行了cProfile,而且正如我所假设的那样,urlopen占用了大量的时间.有没有办法更快地获取页面?或者一种方法一次获取几个页面?我会做最简单的事情,因为我是python和web开发的新手.

提前致谢!:)

更新:我有一个调用的函数fetchURLs(),我用它来制作一个我需要的URL数组,如下所示urls = fetchURLS().这些URL是来自亚马逊和eBay API的所有XML文件(这让我很困惑,为什么加载需要这么长时间,也许我的虚拟主机很慢?)

我需要做的是加载每个URL,读取每个页面,并将该数据发送到脚本的另一部分,该部分将解析和显示数据.

请注意,在获取所有页面之前,我无法执行后一部分,这就是我的问题所在.

另外,我相信我的主机一次限制我25个进程,所以服务器上最简单的任何东西都会很好:)


这是时间:

Sun Aug 15 20:51:22 2010    prof

         211352 function calls (209292 primitive calls) in 22.254 CPU seconds

   Ordered by: internal time
   List reduced from 404 to 10 due to restriction <10>

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
       10   18.056    1.806   18.056    1.806 {_socket.getaddrinfo}
     4991    2.730    0.001    2.730    0.001 {method 'recv' of '_socket.socket' objects}
       10    0.490    0.049    0.490    0.049 {method 'connect' of '_socket.socket' objects} …
Run Code Online (Sandbox Code Playgroud)

python time urllib2 cprofile urlopen

27
推荐指数
3
解决办法
2万
查看次数

将URL从URL解析为python对象

goodreads网站有这个API用于访问用户的"货架":https://www.goodreads.com/review/list/20990068.xml? key = nGvCqaQ6tn9w4HNpW8kquw &v = 2 &shelf = toored

它返回XML.我正在尝试创建一个django项目,该项目通过此API显示书架上的书籍.我正在寻找如何(或者是否有更好的方法)来编写我的视图,以便将对象传递给我的模板.目前,这就是我正在做的事情:

import urllib2

def homepage(request):
    file = urllib2.urlopen('https://www.goodreads.com/review/list/20990068.xml?key=nGvCqaQ6tn9w4HNpW8kquw&v=2&shelf=toread')
    data = file.read()
    file.close()
    dom = parseString(data)
Run Code Online (Sandbox Code Playgroud)

如果我正确地这样做,我不完全确定如何操纵这个对象.我正在学习本教程.

python xml django urllib2 xml-parsing

27
推荐指数
3
解决办法
5万
查看次数