【问题标题】:Python - How to deal with an exception?Python - 如何处理异常?
【发布时间】:2021-09-01 19:53:10
【问题描述】:

我的代码从网页中收集了一堆 URL,然后将它们放入一个列表中。

一旦进入一个列表,它就会一个一个地进入每个列表,然后执行一次抓取。

但是,一些网页一旦被访问,就会有一个空白页面,这会阻止代码执行 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-us&previousLocale=en-US'

for x in range(1,89):
    driver.get(f'https://careers.abbvie.com/abbvie/jobs?page={x}&categories=Administrative%20Services%7CBusiness%20Development%7CGeneral%20Management%7CHEOR%2FMarket%20Access%7CInformation%20Technology%7CMarketing%7CMedical%7CRegulatory%20Affairs%7CSales%7CSales%20Support')
    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')

【问题讨论】:

标签: python exception


【解决方案1】:

您需要做的是用try/except 块包装可能引发异常的行

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

【讨论】:

  • 我会试试这个,但是我会把它放在我的代码的哪个块中。它会影响我在代码中列出的字典吗?
  • 共享异常信息,以便我们了解代码的哪一部分抛出了它。它不应该影响您在代码中使用的 dict。但正如我所写 - 我们需要详细信息才能继续前进。
  • 如果网页为空白/出现异常,我只想让它继续到列表中的下一个链接。那么 print("hello") 就足够了吗?例外情况下?
  • @Age - 你有 2 个从网页读取数据的 for 循环 - 其中一个会引发异常。请分享完整的详细信息。
  • 让我们假设(不确定它是否正确)`driver.get(f'careers.abbvie.com/abbvie/jobs?page={x}&categories=Administrative%20Services%7CBusiness%20Development%7CGeneral%20Management%7CHEOR%2FMarket%20Access% 7CInformation%20Technology%7CMarketing%7CMedical%7CRegulatory%20Affairs%7CSales%7CSales%20Support')` 引发异常 - 用 try/except 和 continue 循环包装它
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多