【发布时间】:2014-01-13 06:36:39
【问题描述】:
我是 python 新手。下面的函数给出了来自 imdb 的电影和导演名称。它适用于单个链接。但是当我为大量链接运行它时,它会给出 ConnectionResetError: [WinError 10054] 现有连接被远程主机强行关闭。
我该怎么办?如何改进代码?
def get_director(movie_url):
html=urllib.request.urlopen(movie_url).read()
soup=BeautifulSoup(html,"lxml")
movie=soup.find("h1","header")
movie_name=movie.find("span","itemprop").text
d=soup.find("div","txt-block")
director=d.find("span","itemprop").text
return {'Movie':movie_name,'Director':director}
【问题讨论】:
-
我不知道它是否会起作用,但您可以尝试在调用
get_director方法之间使用time.sleep 方法。您可能访问服务器的速度太快了。将呼叫延迟一秒钟也有助于解决问题。 -
我按照你的说明试过了。仍然得到同样的错误。
-
我仍然认为这是某种速率限制问题。您应该按照Andrew Gorcester 所说的那样做,并尝试使用用户代理和请求之间的延迟。
-
try ...except 块会起作用吗?如果是,我应该把它放在哪里?
标签: python python-3.x beautifulsoup urllib