我需要从非ASCII字符的URL获取数据,但urllib2.urlopen拒绝打开资源,并提出: UnicodeEncodeError: 'ascii' codec can't encode character u'\u0131' in position 26: ordinal not in range(128) 我知道url不符合标准,但我没有机会改变它。 使用Python访问由包含非ASCII字符的URL指向的资源的方式是什么? 编辑:换句话说,可以/如何urlopen打开一个URL,如: http://example.org/Ñöñ-ÅŞÇİİ/
我有一个脚本,提取几个网页,并parsing信息。 (可以在http://bluedevilbooks.com/search/?DEPT=MATH&CLASS=103&SEC=01上看到一个例子) 我跑了cProfile,正如我所设想的,urlopen占用了很多时间。 有没有办法更快地获取页面? 或者一次获取多个页面的方式? 我会做任何最简单的,因为我是python和web开发的新手。 提前致谢! 🙂 更新:我有一个函数称为fetchURLs() ,我用它来创build一个我需要的URL的数组,这样的东西就像urls = fetchURLS() 。这些URL都是来自Amazon和eBay API的XML文件(这使我困惑urls = fetchURLS()加载需要很长时间,也许我的虚拟主机速度很慢?) 我需要做的是加载每个URL,读取每个页面,并将数据发送到脚本的另一部分,将parsing和显示数据。 请注意,我不能做后面的部分,直到所有的页面被提取,这就是我的问题是。 此外,我的主机一次限制我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 […]
与Python3我要求从一些URL一个JSON文件。 response = urllib.request.urlopen(request) response对象是一个类似read,readline函数的对象。 通常情况下,一个JSON对象可以创build一个文件(以textmode打开) obj = json.load(fp) 我想要做的是: obj = json.load(response) 但是这不起作用,因为urlopen以二进制模式返回文件对象。 解决方法当然是: str_response = response.readall().decode('utf-8') obj = json.loads(str_response) 但是这感觉很糟糕… 有没有更好的方法,我可以将字节文件对象转换为string文件对象? 或者我错过任何urlopen或json.load参数给一个编码? 这在我看来是一个常见的用例,所以我相信我错过了一些有用的function。