WinError 10054 в учебнике по API - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь пройти курс для извлечения xml данных с python, но, несмотря на то, что я следую этому уроку, я получаю ошибку 10054. Что я делаю не так?

    from bs4 import BeautifulSoup as soup
    from urllib.request import urlopen
    url = 'https://ehp.qld.gov.au/cgi-bin/air/xml.php?category=1&region=ALL'
    url_result = urlopen(url)
    raw_data = url_result.read()
    xml_soup = soup(raw_data, 'xml')    
    print(xml_soup)

Это ошибка, когда я пытаюсь запустить код.

ConnectionResetError                      Traceback (most recent call last)
<ipython-input-2-76e557f468e2> in <module>
      1 url = 'https://apps.des.qld.gov.au/air-quality/xml/feed.php?category=1&region=ALL'
----> 2 url_result = urlopen(url)
      3 raw_data = url_result.read()
      4 xml_soup = soup(raw_data, 'xml')
      5 print(xml_soup)


~\anaconda3\lib\ssl.py in read(self, len, buffer)
    927         try:
    928             if buffer is not None:
--> 929                 return self._sslobj.read(len, buffer)
    930             else:
    931                 return self._sslobj.read(len)

ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host

1 Ответ

0 голосов
/ 01 апреля 2020

Проблема в том, что вы не указали в своем запросе информацию о пользовательском агенте. Несмотря на то, что вы, возможно, читаете учебник с работающим кодом, веб-сайт, возможно, изменился / обновился.

Я попробовал ваш код без агента пользователя и получил ту же ошибку, что и вы, но после подмены user-agent, запрос сработал.

>>> from urllib.request import urlopen, Request
>>> url = 'https://ehp.qld.gov.au/cgi-bin/air/xml.php?category=1&region=ALL'
>>> req = Request(url)
>>> req.add_header('User-Agent','Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0')
>>> url_result = urlopen(req)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...