python - Python selenium 多次单击并返回相同的 xpath
问题描述
我尝试在不同页面获取同一日期下的文章,有三个'Corp,FIG,SSA',我需要单击一个然后返回并单击另一个,但是元素的 xpath 是相同的,所以我想知道是否有一些“聪明”的方式来做到这一点,而不是一次又一次地复制?
如果页面中没有文章,我也希望网站返回,我应该使用“尝试”吗?
令人惊讶的是,我在 csv 文件中得到了两次结果,就像 aabb... 不知道为什么
driver.get('https://www.globalcapital.com/Asia/Bonds')
Corp = driver.find_element_by_link_text("Corp")
Corp.click()
driver.implicitly_wait(10)
links=[link.get_attribute('href') for link in driver.find_elements_by_xpath("//div[contains(text(),'28 Jan 2021')]/preceding::a[2]")]
titles = [link.text for link in driver.find_elements_by_xpath("//div[contains(text(),'28 Jan 2021')]/preceding-sibling::h3/a")]
for link in links:
for title in titles:
dataframe = pd.DataFrame({'col1':title,'col2':link},index=[0])
dataframe.to_csv('hi.csv',mode='a+',header=False,index=False,encoding='utf-8-sig')
driver.back()
FIG = driver.find_element_by_link_text("FIG")
FIG.click()
driver.implicitly_wait(10)
links=[link.get_attribute('href') for link in driver.find_elements_by_xpath("//div[contains(text(),'28 Jan 2021')]/preceding::a[2]")]
titles = [link.text for link in driver.find_elements_by_xpath("//div[contains(text(),'28 Jan 2021')]/preceding-sibling::h3/a")]
for link in links:
for title in titles:
dataframe = pd.DataFrame({'col1':title,'col2':link},index=[0])
dataframe.to_csv('hi.csv',mode='a+',header=False,index=False,encoding='utf-8-sig')
driver.back()
SSA = driver.find_element_by_link_text("SSA")
SSA.click()
driver.implicitly_wait(10)
解决方案
您正在迭代titles
多次(每次迭代一次link
)。您需要遍历链接、标题对:
for link, title in zip(links, titles):
dataframe = pd.DataFrame({'col1':title,'col2':link},index=[0])
dataframe.to_csv('hi.csv',mode='a+',header=False,index=False,encoding='utf-8-sig')
推荐阅读
- c# - 使用 iTextSharp 更改导出 pdf 文件中的默认字体
- python - 二维初始化numpy数组
- selenium - 使用 Selenium 时未输入符号 (@)
- hyperledger-fabric - IBM Blockchain api - 状态端点
- javascript - JavaScript - 通过单击 id 和 addEventListener 仅更改一个按钮
- excel - 在重新排列的表格中使用公式
- react-native - 如何在 React Native for Android 8.1 (Oreo) 中做后台工作
- python - 如何将作为列表列表的值的字典转换为python中的数据框?
- ebean - Play Framework 2.6.x ebean:DataSource 仅在生产中为空
- css - 仅在垂直方向上的 CSS 三角形定位和钝度