Python 循环更改xpath值w/Selenium

Python 循环更改xpath值w/Selenium,python,pandas,dataframe,selenium,selenium-webdriver,Python,Pandas,Dataframe,Selenium,Selenium Webdriver,我正在抓取一个有数百所学校下拉菜单的网站。我试着翻阅并抓取该州某个地区学校的桌子。到目前为止,我只隔离了这些学校的值,但我无法从存储在数据帧/列表中的内容中替换xpath值 这是我的密码: ousd_list = ousd['name'].to_list() for i in range(0,129): n = 0 driver.find_element_by_xpath(('"//option[@value="',ousd_list[n],']"

我正在抓取一个有数百所学校下拉菜单的网站。我试着翻阅并抓取该州某个地区学校的桌子。到目前为止,我只隔离了这些学校的值,但我无法从存储在数据帧/列表中的内容中替换xpath值

这是我的密码:

ousd_list = ousd['name'].to_list()
for i in range(0,129): 
    n = 0
    driver.find_element_by_xpath(('"//option[@value="',ousd_list[n],']"'))
    driver.find_elements_by_name("submit1").click()
    table = driver.find_elements_by_id("ContentPlaceHolder1_grdDisc")
    tdf = pd.read_html(table)
    tdf.to_csv(index=False)
    n += 1
    driver.get('https://dq.cde.ca.gov/dataquest/Expulsion/ExpSearchName.asp?TheYear=2018-19&cTopic=Expulsion&cLevel=School&cName=&cCounty=&cTimeFrame=S')

我怀疑问题出在find_元素的xpath行上,但我不确定如何解决这个问题。有什么建议吗?

错误不在刮取部分,而是您的代码逻辑,因为您将
n=0
放在循环的开头,它会重置为0,每个循环都会找到您的
ousd\u列表[0]

试试看


为什么使用i和n?n也重置为0。那么你是说我应该使用while循环来代替吗?或者只是不同的变量?这就是你说的,但它不能解决问题。我收到以下错误消息:InvalidArgumentException:message:invalid参数:“value”必须是引用以下行的字符串:driver.find_element_by_xpath(“//option[@value=“”,ousd_name,”))
但它没有解决问题
此代码片段解决了您在此线程中指定的问题,您的新问题是xpath格式不正确,不在您的问题范围内。因此,它确实解决了您提出的问题,因为您有一个新问题,您应该为该不同的问题打开一个新线程。However,为了节省时间,我用f-string替换了你的字符串,现在应该可以用了。
ousd_list = ousd['name'].to_list()
for ousd_name in ousd_list : 
    driver.find_element_by_xpath(f'//option[@value="{ousd_name}"]')
    driver.find_elements_by_name("submit1").click()
    table = driver.find_elements_by_id("ContentPlaceHolder1_grdDisc")
    tdf = pd.read_html(table)
    tdf.to_csv(index=False)
    driver.get('https://dq.cde.ca.gov/dataquest/Expulsion/ExpSearchName.asp?TheYear=2018-19&cTopic=Expulsion&cLevel=School&cName=&cCounty=&cTimeFrame=S')