1

我正在尝试编写一个 Python 程序来处理 RSS,但是我在直接从 Internet 下载文件时遇到了一些问题。

我正在使用 urllib.request.urlopen() 来获取文件。这是我遇到问题的代码:

import xml.etree.ElementTree as et
import urllib.request as urlget

self.sourceUrl = sourceUrl       #sourceUrl was an argument
self.root = et.fromstring(urlget.urlopen(sourceUrl).read())

我已将问题追踪到一行:

urllib.request.urlopen calls urllib.request.opener.open()  
    which then calls self._open()  
    which then calls self._call_chain()  
    which then calls urllib.request.HTTPHandler.http_open()  
    which then calls urllib.request.AbstractHTTPHandler.do_open()  
    which then calls http.client.HTTPConnection.getresponse()  
    which then calls http.client.HTTTResponse.begin()  
    which then calls self._read_status()  

问题行(发现是多次暂停执行时出现的唯一行):
Python33\Lib\http\client.py 第 317 行

if len(line) > _MAXLINE:

我可以继续编写代码,但前提是我通过 Step Over 照看它,直到我回到我的代码。

在我的测试中,这个问题从未发生过,所以我不知道为什么我现在得到它。

提前感谢您的帮助!

编辑:来源可以在这里找到。我很久以前就失去了从事这个项目的动力,从那以后就再也没有碰过它。如果我有更多的动力,我可能会重做整个事情,但我预计不会很快。如果您想回答,我邀请您参加,这可能对其他人有益。但是请注意,代码很糟糕,因为当时我的经验相对较少。我真的找不到解决办法,但我发现你必须查看 data/code/functions.py

另请注意,据我所知,它并没有调用错误,只是程序在我不耐烦之前一次挂起几分钟。

4

1 回答 1

0

如果没有更多代码,将很难为您提供帮助。您的提要的 URL 是什么。当您尝试简单地访问它时它会返回什么。

Python 3.3.0 (v3.3.0:bd8afb90ebf2, Sep 29 2012, 01:25:11) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import xml.etree.ElementTree as et
>>> import urllib.request as urlget
>>> sourceurl = "http://www.la-grange.net/feed"
>>> root = et.fromstring(urlget.urlopen(sourceurl).read())
>>> root
<Element '{http://www.w3.org/2005/Atom}feed' at 0x1013a82b8>
>>> 
于 2013-05-02T03:52:40.287 回答