urllib.error.HTTPError: Ошибка HTTP 404: не найден Python при очистке данных из Metacritic - PullRequest
1 голос
/ 29 марта 2019

Я пытаюсь почистить рейтинги фильмов от Metacritic. Вот часть кода, которая выдает ошибку.

text = text.replace("_","-")
user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7'
headers={'User-Agent':user_agent,} 
URL = "http://metacritic.com/" + text
request=urllib.request.Request(URL,None,headers)
try:
    response = urllib.request.urlopen(request)
    data = response.read()
    soup = BeautifulSoup(data,'html.parser')
    metacritic_rating = "Metascore: " + soup.find("span",class_="metascore_w").get_text()
    send_message(metacritic_rating,chat) 
except:
    pass

Я изменил то, что написал, используя это: https://stackoverflow.com/a/42441391/8618880

Я не могу использовать requests.get() из-за этого: urllib2.HTTPError: Ошибка HTTP 403: запрещено

Я ищу способ получить код состояния страницы. Я смог найти способ, когда использовал requests.get().

Я проверил все ответы с заголовком: urllib.error.HTTPError: HTTP Error 404: Not Found Python, но не смог найти никакой помощи.

Любая помощь приветствуется.

1 Ответ

1 голос
/ 29 марта 2019

Я думаю, это то, что вы хотите:

import urllib


user_agent = 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.7) Gecko/2009021910 Firefox/3.0.7'
headers={'User-Agent':user_agent,} 
URL = "http://metacritic.com/" + text
request=urllib.request.Request(URL,None,headers)

try:
    response = urllib.request.urlopen(request)
    data = response.read()
    soup = BeautifulSoup(data,'html.parser')
    metacritic_rating = "Metascore: " + soup.find("span",class_="metascore_w").get_text()
    send_message(metacritic_rating,chat) 
except urllib.error.HTTPError as err:
    #print(err.code)
    if err.code == 403:
        <do something>
    else:
        pass

Выход:

403
...