我正在尝试从here和here这两个页面中抓取“活动”文本框。
我写了代码的基础:
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(".//*")
我有两个问题:
因此,我坚持确定可以添加到脚本中以提取以下内容的一行或两行代码:
neuropeptide | ne
alpha-amylase inhibitor | aami
如果有人可以帮助的话,从这两个网页上
答案 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_option
和WebDriverWait
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