我真的是硒新手。
目前,我正在尝试同时使用硒和beautifulsoup进行一些网络爬虫。我正在网上爬网的网站是Activity
。
这是我现在拥有的代码。
BottomNavigationView
我试图在搜索时单击出现的第一个SNP ID。对我来说,单击搜索结果的href的好方法是什么?
答案 0 :(得分:2)
在网页https://bigd.big.ac.cn/dogsdv2/pages/modules/indsnp/indsnp_search.jsp
上以 P2RY12 搜索基因名称,然后点击出现的第一个 SNP ID 搜索您需要为element_to_be_clickable()
引入 WebDriverWait ,您可以使用以下Locator Strategies:
代码块:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
options = webdriver.ChromeOptions()
options.add_argument("start-maximized")
options.add_experimental_option("excludeSwitches", ["enable-automation"])
options.add_experimental_option('useAutomationExtension', False)
driver = webdriver.Chrome(options=options, executable_path=r'C:\WebDrivers\chromedriver.exe')
driver.get('https://bigd.big.ac.cn/dogsdv2/pages/modules/indsnp/indsnp_search.jsp')
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input#idgname[name='searchForm.genename']"))).send_keys("P2RY12")
driver.find_element_by_css_selector("button.button[type='submit']").click()
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "form[action^='/dogsdv2/com/exportFile'] table>tbody>tr td:nth-child(3)>a"))).click()
浏览器快照:
答案 1 :(得分:0)
在Chrome中,您可以按F12键。找到该元素,然后右键单击以复制此元素的xpath。 在此代码中,如果要单击第一个SNP ID,请添加此
firstID = driver.find_element_by_xpath("/html/body/div/div[2]/div[2]/form/table/tbody/tr[1]/td[3]/a[1]");
firstID.click()
仅举一个例子。
答案 2 :(得分:0)
尝试一下:
firstsnpID = driver.find_element_by_xpath("(.//table[@class='table7 table7-border']/tbody/tr/td[3]/a)[1]")
firstsnpID.click()
您不能使用复合类通过find_element_by_class_name
来定位元素
答案 3 :(得分:0)
要点击表格上的第一个链接,请诱导WebDriverWait
()和element_to_be_clickable
()以及随后的CSS选择器。
代码:
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome(executable_path=path_to_chromebrowser)
driver.get("https://bigd.big.ac.cn/dogsdv2/pages/modules/indsnp/indsnp_search.jsp")
input_area = driver.find_element_by_name("searchForm.genename")
input_area.send_keys("P2RY12")
searcher = driver.find_element_by_class_name("button")
searcher.click()
WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.CSS_SELECTOR,"table.table7.table7-border td>a[href^='/dogsdv2/refsnp/showRefSNPDetail']"))).click()
要获取所有链接,引出WebDriverWait
()和visibility_of_all_elements_located
()并获取href值,然后迭代每个URL
allelemets=WebDriverWait(driver,10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR,"table.table7.table7-border td>a[href^='/dogsdv2/refsnp/showRefSNPDetail']")))
allurls=[item.get_attribute('href') for item in allelemets]
print(allurls)
for link in allurls:
driver.get(link)
答案 4 :(得分:0)
driver.find_element_by_xpath('/html/body/div/div[2]/div[2]/form/table/tbody/tr[1]/td[3]/a[1]').click()
如果您需要其他ID:
for id in range(1,10):
driver.find_element_by_xpath('/html/body/div/div[2]/div[2]/form/table/tbody/tr[{}]/td[3]/a[1]'.format(id)).click()
sleep(5)
driver.back()