Python — Как бороться с исключением?

#python #exception

Вопрос:

Мой код собирает кучу URL-адресов с веб-страницы, а затем помещает их в список.

Попав в список, он переходит в каждый из них 1 на 1, а затем выполняет очистку.

Однако на некоторых веб-страницах, к которым был получен доступ, есть пустая страница, которая не позволяет коду выполнять остальные URL-адреса.

Как я могу добавить исключение или около того в свой код, чтобы, если это произойдет, я мог просто обойти веб-страницу и перейти к следующему URL-адресу?

 from selenium import webdriver
import time
from bs4 import BeautifulSoup
driver = webdriver.Chrome()
import pandas as pd
import requests
dataf=[]
val=[]
baseurl='https://careers.abbvie.com/'
endurl='?lang=en-usamp;previousLocale=en-US'

for x in range(1,89):
    driver.get(f'https://careers.abbvie.com/abbvie/jobs?page={x}amp;categories=Administrative Services|Business Development|General Management|HEOR/Market Access|Information Technology|Marketing|Medical|Regulatory Affairs|Sales|Sales Support')
    time.sleep(7)
    page_source = driver.page_source
    soup = BeautifulSoup(page_source, 'html.parser')
    eachRow = soup.find_all('p', class_='job-title')
    for link in eachRow:
        for links in link.find_all('a',href=True):
            val.append(baseurl links['href'] endurl)
for b in val:
    try:
        driver.get(b)
        time.sleep(3)
        page_source = driver.page_source
        title=driver.find_element_by_xpath('//*[@id="jibe-container"]/div[2]/div/div/h1').text
        location=driver.find_element_by_xpath('//*[@id="header-locations"]/span').text
        categories=driver.find_element_by_xpath('//*[@id="header-categories"]/span').text
        jobID=driver.find_element_by_xpath('//*[@id="header-req_id"]/span').text
        dict={"Title":title,"location":location,"categories":categories,"jobID":jobID,"URL":b}
        dataf.append(dict)
    except:
        print("hello")
df=pd.DataFrame(dataf)
df.to_csv('restasis.csv')

 

Комментарии:

1. docs.python.org/3/reference/compound_stmts.html#try

2. docs.python.org/3/tutorial/errors.html#raising-exceptions

3.Ваш вопрос теперь включает в себя try except . Означает ли это, что вы знаете, как обрабатывать исключения? Тогда что именно вы спрашиваете об обработке исключений?

Ответ №1:

Что вам нужно сделать, так это обернуть строки, которые могут вызвать исключение, try/except блоком

 try:
  # do something that may throw
except Exception:
  # decide what to do (ignore? / print?)
 

Комментарии:

1. Я бы попробовал это сделать, но в какой блок моего кода я бы это вставил. Повлияет ли это на словарь, который я перечислил в своем коде?

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

3. Если веб-страница пуста/возникает исключение, я просто хочу, чтобы она переходила к следующей ссылке в списке. Так будет ли для этого достаточно печати(«привет»)? в порядке исключения?

4. @Возраст — у вас есть 2 цикла for, которые считывают данные с веб — страниц-какой из них вызывает исключение. Поделитесь полной информацией, пожалуйста.

5. предположим, что (не уверен, что это правда), что ` водитель.вам(Ф’ careers.abbvie.com/abbvie/jobs?page= {x}amp;categories=Administrative Services|Business Development|General Management|HEOR/Market Access|Information Technology|Marketing|Medical|Regulatory Affairs|Sales|Sales Support’)` поднять исключение — обернуть его в блок try/except и continue петлю