Может ли кто-нибудь подсказать, как изменить/исправить мой код на Python Selenium, чтобы очистить этот веб-сайт без ручной проверки записей

#python #selenium #web-scraping

Вопрос:

Я закончил код, чтобы очистить этот веб-сайт: https://publicrecordsaccess.fultoncountyga.gov/Portal/Home/Dashboard/29 Чтобы попасть на веб-страницу, вам нужно будет ввести «Белый, Жасмин» в части поиска и обойти reCAPTCHA вручную. Вот мой код

 #Empty List to store the elements
name =[]
address = []
dob = []
race = []
gender = []
defendant = []
date = []
ftype = []
status = []
case_id = []

web = 'https://publicrecordsaccess.fultoncountyga.gov/Portal/Home/Dashboard/29'
keys = 'White, Jasmine'

nb = 1
b = "CaseResultsGrid_"

op = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=op, executable_path="/usr/local/bin/chromedriver")
actions = ActionChains(driver)
driver.get(web)

driver.find_element_by_xpath('//*[@id="caseCriteria_SearchCriteria"]').send_keys(keys)

#Wait til bypass the reCAPTCHA and webpage fully loaded to continue
input("Press Enter to continue...")

content = driver.find_elements_by_css_selector(".k-detail-cell .party-card")

for c in content: 
    #The loop will stop/break when it cant locate any web elements
    try:
        tr = c.find_element_by_xpath(f'//*[@id="Grid"]/table/tbody/tr[{nb}]/td[2]/a')
    except:
        break
    
    #Get Grid ID
    actions.move_to_element(c).perform()
    time.sleep(0.2)
    g = c.get_attribute('id')

    #Get Data ID
    pat = c.find_element_by_xpath(f'//*[@id="Grid"]/table/tbody/tr[{nb}]/td[2]/a')
    id_nub = pat.get_attribute('data-party-id')
    k = b   id_nub

    #Name
    try:
        cname = c.find_element_by_xpath(f'//*[@id="Grid"]/table/tbody/tr[{nb}]/td[2]/a').text.strip()
        name.append(cname)          
    except:
        name.append('')
    #dob
    try:
        born = c.find_element_by_xpath(f'//*[@id="Grid"]/table/tbody/tr[{nb}]/td[3]').text.strip()
        dob.append(born)          
    except:
        dob.append('')
    #Address
    try:
        addr = c.find_element_by_xpath(f'//*[@id="{g}"]/div[1]/div[1]/div/div[2]/div').text.strip()
        address.append(addr)
    except:
        address.append('')
    #Race
    try:
        rac = c.find_element_by_xpath(f'//*[@id="{g}"]/div[1]/div[2]/div/div[2]').text.strip()
        race.append(rac)
    except:
        race.append('')
    #Gender
    try:
        gen = c.find_element_by_xpath(f'//*[@id="{g}"]/div[1]/div[3]/div/div[2]/div').text.strip()
        gender.append(gen)
    except:
        gender.append('')
    #Case Number
    try:
        case = c.find_element_by_xpath(f'//*[@id="{k}"]/table/tbody/tr[1]/td[2]/a').text.strip()
        case_id.append(case)
    except:
        case_id.append('')
    #Defendant
    try:
        defe = c.find_element_by_xpath(f'//*[@id="{k}"]/table/tbody/tr[1]/td[3]/div').text.strip()
        defendant.append(defe)
    except:
        defendant.append('')
    #File Date
    try:
        fdate = c.find_element_by_xpath(f'//*[@id="{k}"]/table/tbody/tr[1]/td[4]').text.strip()
        date.append(fdate)
    except:
        fdate.append('')
    #Type
    try:
        ctype = c.find_element_by_xpath(f'//*[@id="{k}"]/table/tbody/tr[1]/td[5]').text.strip()
        ftype.append(ctype)
    except:
        ftype.append('')
    #Status
    try:
        fstatus = c.find_element_by_xpath(f'//*[@id="{k}"]/table/tbody/tr[1]/td[6]').text.strip()
        status.append(fstatus)
    except:
        status.append('')
        
    #The number is increased by 2 since only odd number contain the information in thie web page   
    nb  = 2
        
driver.close()
print('Done')

#Convert all List into one dataframe
df = pd.DataFrame({
'Name':name,
'Address': address,
'DOB':dob,
'Race':race,
'Gender':gender,
'Case_ID': case_id,
'Defendant':defendant,
'File_Date':date,
'Tyep':ftype,
'Status':status
})
 

Мой код работает отлично, может быть, он может быть быстрее/проще. Он может очистить все, за исключением 1, который мой код способен удалить только первую запись информации. Как показано на скриншоте ниже, у первой Жасмин Уайт две записи, но у второй Жасмин Уайт только одна. Я хотел бы добавить/изменить свой код, чтобы иметь возможность удалять каждую запись, независимо от того, сколько у них записей, например 1, 2, 3 или, может быть, больше записей.

Было бы здорово, если бы у меня были какие-то предложения по этому поводу! Спасибо вам всем!!

введите описание изображения здесь