#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
петлю