파이썬 urllib.request.urlopen 타임아웃 오류 왜 뜨는걸까요?

조회수 10301회

다음 뉴스를 한번 크롤링해보려고 시도했는데 타임아웃 오류가 뜨더군요 그래서 코드를 한줄 한줄 치면서 무엇이 오류인가 찾았더니 urllib.request.urlopen 에서 타임아웃 오류가 뜨는데 이게 왜 뜨는건지를 몰라서요 어떻게 해야 크롤링이 가능할까요 ㅠㅠ 코드는

import urllib.request
import urllib.parse
from bs4 import BeautifulSoup

url="http://search.daum.net/search?w=news&q=GIA%EB%8B%A4%EC%9D%B4%EC%95%84%EB%AA%AC%EB%93%9C&spacing=0&p=1&DA=PGD"
req=urllib.request.Request(url)
res=urllib.request.urlopen(req)

이렇고 오류는

Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    res=urllib.request.urlopen(req)
  File "C:\Python34\lib\urllib\request.py", line 161, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Python34\lib\urllib\request.py", line 464, in open
    response = self._open(req, data)
  File "C:\Python34\lib\urllib\request.py", line 482, in _open
    '_open', req)
  File "C:\Python34\lib\urllib\request.py", line 442, in _call_chain
    result = func(*args)
  File "C:\Python34\lib\urllib\request.py", line 1211, in http_open
    return self.do_open(http.client.HTTPConnection, req)
  File "C:\Python34\lib\urllib\request.py", line 1186, in do_open
    r = h.getresponse()
  File "C:\Python34\lib\http\client.py", line 1227, in getresponse
    response.begin()
  File "C:\Python34\lib\http\client.py", line 386, in begin
    version, status, reason = self._read_status()
  File "C:\Python34\lib\http\client.py", line 348, in _read_status
    line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
  File "C:\Python34\lib\socket.py", line 378, in readinto
    return self._sock.recv_into(b)
TimeoutError: [WinError 10060] 연결된 구성원으로부터 응답이 없어 연결하지 못했거나, 호스트로부터 응답이 없어 연결이 끊어졌습니다

이렇게 뜨네요 ㅠㅠ 도와주세요 ㅠㅠ

  • (•́ ✖ •̀)
    알 수 없는 사용자
  • 제 네트워크 환경에서 재현을 시도해보았으나 되지 않았습니다. 네트워크 상의 문제가 아닌 지 의심되는군요. 알 수 없는 사용자 2016.9.17 02:00

1 답변

  • 저는

    import urllib.parse
    
    url="http://search.daum.net/search?w=news&q=GIA%EB%8B%A4%EC%9D%B4%EC%95%84%EB%AA%AC%EB%93%9C&spacing=0&p=1&DA=PGD"
    req=urllib.request.Request(url)
    res=urllib.request.urlopen(req)
    

    을 실행했을 때, 아무런 문제가 없었습니다.

    Timeout 에러는 연결을 시도했으나, 정해진 시간 내에 연결이 되지 않았다는 뜻인데요.

    코드를 돌릴 당시 인터넷 연결이 끊겼거나, 잠시 연결이 안정적이지 않아서 에러가 발생한 것 같네요.

    코드를 다시 한 번 돌려보세요.

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)