两部分问题.我试图从互联网档案下载多个存档的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 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) 我不想使用html文件,但只有django我必须发出POST请求.
就像urllib2发送get请求一样.
当urllib2.request到达超时,一个urllib2.URLError异常.重试建立连接的pythonic方法是什么?
我正在尝试使用urllib2 http客户端在python中创建下载进度条.我查看了API(以及谷歌),似乎urllib2不允许您注册进度挂钩.但是旧版已弃用的urllib确实具有此功能.
有谁知道如何使用urllib2创建进度条或报告钩子?或者是否有其他一些黑客可以获得类似的功能?
该urllib2的文件说,超时参数是在Python 2.6增加.不幸的是,我的代码库已经在Python 2.5和2.4平台上运行.
有没有其他方法来模拟超时?我想要做的就是让代码在一段固定的时间内与远程服务器通话.
也许任何替代内置库?(不要像pycurl那样安装第三方)
我正在学习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) …
我需要进行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数据和文件有关.
关于如何使这个工作的任何想法?
我有一个脚本,可以获取多个网页并解析信息.
(可以在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) 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 ×10
urllib2 ×10
django ×2
python-2.7 ×2
urlopen ×2
cprofile ×1
decorator ×1
http ×1
httpclient ×1
json ×1
progress-bar ×1
python-3.x ×1
time ×1
unicode ×1
urllib ×1
xml ×1
xml-parsing ×1