2014-01-13 2 views
3

Я новичок в python. Функция ниже дает название фильма и режиссера из imdb. Он отлично работает для одной ссылки. Но когда я запускаю его для большого списка ссылок, он дает ConnectionResetError: [WinError 10054] Существующее соединение было принудительно закрыто удаленным хостом.ConnectionResetError на веб-scrape перспективе.

Что мне делать? Как улучшить код?

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} 
+0

Я не знаю, будет ли он работать, но вы можете попробовать использовать метод [time.sleep] (http://docs.python.org/2/library/time.html#time.sleep) между вызовами метод get_director. Возможно, вы слишком быстро попадаете на сервер. Задержка вызовов на одну секунду может помочь устранить проблему. –

+0

Я пробовал, как вы указали. Все равно получите ту же ошибку. – ven93

+0

Я все еще думаю, что это проблема ограничения скорости. Вы должны сделать так, как [Andrew Gorcester] (http://stackoverflow.com/users/471671/andrew-gorcester) говорит и экспериментирует с агентами пользователя и задержками между запросами. –

ответ

0

Это звучит довольно вероятно, что это ограничение скорости или некоторые другие ограничения на стороне сервера, а не ошибка в коде таковой. Вы должны начать с просмотра, если imdb опубликовал официальную ставку или другие ограничения на очистку; если они этого не сделали, у вас мало выбора, кроме как экспериментировать и отступать до тех пор, пока ошибки не прекратятся.

+0

Вы были правы! Он работал после небольшой проб и ошибок. В любом случае, моя программа заняла ~ 20 минут, чтобы получить данные из 250 ссылок. Как я могу оптимизировать код? – ven93

+1

Если это связано с ограничением скорости, то вы не можете оптимизировать свой код, за исключением того, что узнаете, что такое лимит ставок и придерживайтесь его, или, найдя другой способ получить нужные вам данные. –

Смежные вопросы