Python selenium从表中提取数据并单击

Python selenium从表中提取数据并单击,python,selenium,web,click,web-crawler,Python,Selenium,Web,Click,Web Crawler,亲爱的社区: 我最近在尝试从以下位置提取数据时遇到了麻烦: https://www2.sgx.com/securities/corporate-information?country=SINGAPORE 我的目的是单击表中的每个链接,从3Cenergy LIMITED开始,它会打开另一个网页选项卡,提取该选项卡,提取后关闭该选项卡,返回主页,然后单击下一个链接 我的问题是: 找不到允许我在表中循环的元素,并且 无法从主网页切换到选项卡,然后再切换回来 我的进展: 我想 <sgx-tabl

亲爱的社区:

我最近在尝试从以下位置提取数据时遇到了麻烦:

https://www2.sgx.com/securities/corporate-information?country=SINGAPORE
我的目的是单击表中的每个链接,从3Cenergy LIMITED开始,它会打开另一个网页选项卡,提取该选项卡,提取后关闭该选项卡,返回主页,然后单击下一个链接

我的问题是: 找不到允许我在表中循环的元素,并且 无法从主网页切换到选项卡,然后再切换回来

我的进展: 我想

<sgx-table-list data-rendered-rows="20" data-visible-rows="10" style="min-width: 560px; transform: translateY(0px);" data-rendered-index="0" data-visible-index="0" xpath="1">
但是,由于无法在表中循环,脚本只执行第一次单击。此外,我无法将其更改为通过xpath查找元素,因为它变成了一个列表,并且.click不起作用


任何帮助都将不胜感激。谢谢

试试下面的方法。我用的是chrome的插件

链接中的主表:将sgx表行[RowNumberHere]更改为循环第1列中的公司

driver.find_element_by_xpath("//sgx-table-row[1]/sgx-table-cell-link[contains(@class, 'sgx-table-cell')]").click()
在公司链接内部:将/tr[rownumberthere]更改为用于循环的变量

driver.find_element_by_xpath("//table[3]/tbody/tr[1]/td[contains(@class, 'basicInfoContentContainerRight')]")
返回一页:

driver.back()

这应该非常简单。流程应如下所示:

导航到该页面 关闭弹出对话框 等待加载数据 循环浏览公司链接单击每个链接,从新选项卡获取数据,关闭新选项卡,切换回主窗口
使用driver.backHi william,我正在使用此代码。然而,由于某种原因,在第一页我无法点击5链接Abterra,在第二页我无法点击第一页。代码:对于范围0100中的i:单击=//sgx表格行[{0}]/sgx表格单元格链接[contains@class,'sgx table cell'].formati+1 driver.find_element_by_xpathclick.click driver.switch_to.windowdriver.window_句柄[1]printdriver.find_element_by_xpath//span[@id='ctl07_secretary1Label'].text driver.close driver.switch_至.windowdriver.window_处理[0]编辑:获取此错误:回溯最近的调用最后一次:File/Users/anthonygoh/Desktop/Data science/usive code/SGX.py,第28行,在过滤器中为e显示Ambda e:e,driver.find\u element公司名称定位器:消息:无效参数:“using”必须是字符串会话信息:chrome=68.0.3440.106抱歉,我现在无法测试此参数。我做了一些调整。。。现在试试?
driver.back()
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

url = "https://www2.sgx.com/securities/corporate-information?country=SINGAPORE"
driver.get(url)

wait = WebDriverWait(driver, 10)

# close the preview warning dialog
wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "#beta-warning-dialog button"))).click()

# wait for the data to be loaded
company_name_locator = (By.CSS_SELECTOR, "div.table-container a")
wait.until(EC.visibility_of_element_located(companyNameLocator))

main_window_handle = driver.current_window_handle
# loop through visible company links
links = list(filter(lambda e: e.is_displayed(), driver.find_elements(companyNameLocator)))
for link in links
    link.click()

    # wait for new tab to open
    wait.until(lambda d: len(d.window_handles) == 2)
    driver.switch_to_window(driver.window_handles[1])

    # scrape something off the page
    print(wait.until(EC.visibility_of_element_located(By.ID, "ctl07_lblCompName")).text)

    # close the current tab
    driver.close()

    # wait for the tab to be closed and switch back to the main tab
    wait.until(lambda d: len(d.window_handles) == 1)
    driver.switch_to_window(main_window_handle)