mercredi 15 juillet 2020

fixing this statement of if,elif, else [closed]

cdis = ["F41H10.4",
"Y75B12B.6",
"C28D4.7",
"Y52B11A.2a",]



for sheetname in writer.sheets:

df.to_excel(writer,sheet_name=sheetname, startrow=writer.sheets[sheetname].max_row, index = False,header= False)



for cdi in cdis:

            driver.get("https://wormbase.org/#012-34-5")
            search = driver.find_element_by_id("Search")
            search.send_keys(cdi)
            search.send_keys(Keys.RETURN)


            ids = driver.find_elements_by_class_name("locus")
            ids1 = driver.find_elements_by_class_name("gene-link")
            ids2 = driver.find_elements_by_class_name("field-content")

The goal is to get the CDI's input and retrieve information from that website. But depending on the CDI's there are 3 outcomes of the page opening. So I am trying to use a if, elif, else statement to check which particular page it is and execute the proper function for that webpage(scraping). I need help fixing this code.

if len(ids)>0:

                # try to search it again or do something else
                id = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "locus")))


                description = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "text-min")))

                data['Gene_name'] = id.text
                data['Description'] = description.text
                driver.back()
                driver.refresh()
                df = df.append(data, ignore_index=True)
                print(df)

this code here works well seperately,

elif len(ids2)>0:
            time.sleep(2)
            id2 = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.TAG_NAME, "i")))
            data['Gene_name'] = id2.text

            description1 = WebDriverWait(driver, 10).until(
                    EC.presence_of_element_located((By.CLASS_NAME, "description")))
            data['Description'] = description1.text

            driver.back()
            driver.refresh()
            df = df.append(data, ignore_index=True)
            print(df)

            driver.back()
            driver.refresh()
            df = df.append(data, ignore_index=True)
            print(df)

but when i add an else for the last statement it becomes an error.

else:

            id1 = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "gene-link")))
            data['Gene_name'] = id1.text
            description = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, "text-min")))
            data['Description'] = description.text

            driver.back()
            driver.refresh()
            df = df.append(data, ignore_index=True)
            print(df)

how can i have all of these go through each if,else,elif depending on the webpage?

Aucun commentaire:

Enregistrer un commentaire