我想在this页上使用硒,在显示“按植物性食物搜索”的框中键入“ 22663”,然后单击“食物-疾病关联”;然后单击页面底部的提交(然后,作为大图,单击下一页上的“植物-疾病关联”,然后导出植物-疾病表)。
我正在遵循these的说明,并编写了以下代码:
import sys
import pandas as pd
from bs4 import BeautifulSoup
import selenium
from selenium import webdriver
from selenium.webdriver.support.ui import Select
import csv
from selenium.webdriver.firefox.firefox_binary import FirefoxBinary
url = 'http://147.8.185.62/services/NutriChem-2.0/'
driver = webdriver.Firefox(executable_path='/Users/kela/Desktop/scripts/scraping/geckodriver')
driver.get(url)
element = driver.find_element_by_id("input_food_name")
element.send_keys("22663")
#click food-disease association
element = driver.find_element_by_xpath("//select[@name='food_search_section']")
all_options = element.find_elements_by_tag_name("option")
接下来的两行是我遇到的问题:
element = Select(driver.find_element_by_id('food_input'))
element.select_by_value('food_disease')
我遇到了错误:
selenium.common.exceptions.UnexpectedTagNameException: Message: Select only works on <select> elements, not on <td>
我的问题是,在this页上,我不了解在我的情况下“ id_of_element”是指什么(以便能够在“按植物搜索-基础食品”部分);因此,例如,在下面的代码行中,我将X替换为什么,然后单击提交,然后转到下一页:
element = Select(driver.find_element_by_id('X'))
element.select_by_value('X')
答案 0 :(得分:3)
单独使用#food_input
会给您一个表格单元格<td>
,您需要选择其下的<select>
元素
更改
element = Select(driver.find_element_by_id('food_input'))
进入
element = Select(driver.find_element_by_css_selector('#food_input select'))
或者只是
element = Select(driver.find_element_by_css_selector('[name=food_search_section]'))
以<select>
元素为目标。