Как исправить HTTPError: запрещено в urllib / urlopen - PullRequest
0 голосов
/ 04 июля 2019

Я только недавно начал изучать Python, хотя у меня уже есть опыт программирования.

Я пытаюсь что-то почистить с веб-сайта, используя BeautifulSoup, и постоянно получаю сообщение об ошибке. Я понимаю, что этот вопрос был опубликован ранее, но я не был уверен, как реализовать решения ..

Вот мой код:

import bs4
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
my_url = 'http://archive.ontheissues.org/Free_Trade.htm'

#opening up connection, grabbing the page
uClient = uReq(my_url)

Я получаю сообщение об ошибке:

  File "D:\Anaconda\lib\urllib\request.py", line 649, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)

HTTPError: Forbidden

Возможно, ответ здесь решает проблему, но я не был уверен, как на самом деле его кодировать и как должен выглядеть весь мой измененный скрипт.

Может кто-нибудь сказать мне, как я могу изменить свой код?

Ответы [ 2 ]

1 голос
/ 04 июля 2019

В качестве альтернативы можно попробовать настроить известный пользовательский агент браузера с помощью метода Request:

import bs4
from urllib.request import Request,urlopen as uReq
from bs4 import BeautifulSoup as soup
my_url = 'http://archive.ontheissues.org/Free_Trade.htm'
req=Request(my_url,headers={'User-Agent': 'Mozilla/5.0'})
#opening up connection, grabbing the page
uClient = uReq(req)
0 голосов
/ 04 июля 2019

Использование запросов.Это намного лучше, так как выполняет всю тяжелую работу (urllib) для вас:

# pip install requests

from requests import Session
from bs4 import BeautifulSoup


my_url = 'http://archive.ontheissues.org/Free_Trade.htm'

s = Session()

r = s.get(my_url)

# get soup
soup = BeautifulSoup(r.content, 'html5lib')

print(soup.prettify())
...