почему моя попытка, кроме проверки, не работает при проверке моего net кода? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь написать код, который выдаст мне ошибку, когда модуль запросов не сможет правильно вытащить html с веб-сайта, проверив, что код net равен 200. как я его написал ниже (если я правильно понимаю), если применяется параметр «кроме», он не будет запускать что-либо под параметром «попробовать» (в случае печати оператора успеха). вы увидите, что если вы запустите эту команду print status, вы получите none, и, несмотря на то, что выполняется параметр «кроме», выполняется строка печати «попытаться». куда я иду не так?

#import modules
import bs4, requests, pyperclip, re

#designate the website
website = "https://grocery.walmart.com/browse/Fresh-Fruit?=&Vegetables_CP_Cat_Anchor_Fresh_Fruit=&aisle=1255027787131_1255027788181&page=1&povid=1255027787131%20%7C%20contentZone3%20%7C%202019-05-29%20%7C%201%20%7C%20Fruits&"
# website = "https://amazon.com/Automate-Boring-Stuff-Python-2nd-ebook/dp/B07VSXS4NK/ref=sr_1_1?dchild=1&keywords=automate+the+boring+stuff&qid=1586981494&sr=8-1"

#pull the html from the website
#checks for net code to verify the html pulled correctly

siteHTML = requests.get(website)
status = siteHTML.raise_for_status()
print(status)
try:
        print("HTML request attempt successful!",)
except status != "<bound method Response.raise_for_status of <Response [200]>>":
    #searches for the net code using regular expression
    codeRegex = re.compile(r'(\d){3}')
    code = codeRegex.search(status)
    print("requests attempt unsuccessful. received net code %s",code.group(0))

Ответы [ 2 ]

1 голос
/ 16 апреля 2020

raise_for_status() вызовет ошибку, если статус не-2xx. Это ошибка, которую нужно отловить, поэтому эта функция должна находиться в блоке try. Затем вы можете поймать HTTPError, полученный в результате неверного запроса. Что-то вроде:

siteHTML = requests.get("http://example.com/badPath")

try:
    siteHTML.raise_for_status()
    print("success")
except requests.HTTPError as err:
    print(err)

Отпечатки:

404 Client Error: Not Found for url: http://example.com/badPath
0 голосов
/ 16 апреля 2020
import requests

website = "https://grocery.walmart.com/browse/Fresh-Fruit?=&Vegetables_CP_Cat_Anchor_Fresh_Fruit=&aisle=1255027787131_1255027788181&page=1&povid=1255027787131%20%7C%20contentZone3%20%7C%202019-05-29%20%7C%201%20%7C%20Fruits&"

r = requests.get(website)
print(r.status_code)
if r.status_code == 200:
    print("HTML request attempt successful!",)
else:
    print("requests attempt unsuccessful. received net code {}".format(r.status_code))
...