硒:按“选项选定值”进行选择,默认情况下不存在

时间:2019-09-24 13:25:09

标签: python selenium

我正在尝试从herehere这两个页面中抓取“活动”文本框。

我写了代码的基础:

options = Options()
options.binary_location=r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'
options.add_experimental_option('excludeSwitches', ['enable-logging'])
#options.add_argument("--headless")
driver = webdriver.Chrome(options=options,executable_path='/mnt/c/Users/kela/Desktop/selenium/chromedriver.exe


url = 'http://www.uwm.edu.pl/biochemia/biopep/peptide_data_page1.php?zm_ID=' + str(i) #where str(i) is either 2500 or 2700 in this example
driver.get(url)
header = driver.find_element_by_css_selector('[name="activity"]')
children = header.find_elements_by_xpath(".//*")

我有两个问题:

  1. 我只需要提取“选项选择值”活动项目,就不希望返回所有活动。
  2. 但如果选项是列表中的第一项,则此处显示的活动为“ aami”的页面之一就是这种情况;不能选择“选定值”,因为它是默认值。

因此,我坚持确定可以添加到脚本中以提取以下内容的一行或两行代码:

neuropeptide | ne
alpha-amylase inhibitor | aami

如果有人可以帮助的话,从这两个网页上

2 个答案:

答案 0 :(得分:1)

您应该检查选项元素的属性。 如果在任何选项中都具有“ selected”属性,请获取它。 如果“ selected”属性没有任何选项,则仅获取第一个选项。

我已经用BeautifulSoup实现了发现属性。您也可以通过执行Javascript代码在Selenium中实现。示例here

我的代码:

from selenium import webdriver
from bs4 import BeautifulSoup

driver = webdriver.Firefox()
url = 'http://www.uwm.edu.pl/biochemia/biopep/peptide_data_page1.php?zm_ID=2500'

driver.get(url)

header = driver.find_element_by_css_selector('[name="activity"]')
soup = BeautifulSoup(header.get_attribute("innerHTML"), 'html.parser')

options = soup.find_all('option')
for option in options:
    if 'selected' in option.attrs:
        print(option.text)
        break
else:
    print(options[0].text.strip())

答案 1 :(得分:1)

使用model.add(Dense(1000)) # softmax removed from this layer... model.add(Activation('softmax')) # ...and added to its own layer 类并获取Select。您需要诱导first_selected_optionWebDriverWait

presence_of_element_located

输出:

i=2700
url = 'http://www.uwm.edu.pl/biochemia/biopep/peptide_data_page1.php?zm_ID=' + str(i) #where str(i) is either 2500 or 2700 in this example
driver.get(url)
element=WebDriverWait(driver,20).until(EC.presence_of_element_located((By.NAME,"activity")))
select=Select(element)
print(select.first_selected_option.text)

如果将值更改为neuropeptide | ne ,将得到2500

导入以下内容以执行上述代码。

alpha-amylase inhibitor    |    aami