使用硒提取类中的第一个元素



This 搜索 给出结果,并且存在多个 PIN 码。我只需要捕获类中的第一个元素。

法典:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from bs4 import BeautifulSoup
import re
import pandas as pd
import os
import html5lib
import json
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
url = "https://www.google.com/"
chromedriver = r"C:Usersmechromedriver"
driver = webdriver.Chrome(chromedriver)
driver.implicitly_wait(30)
driver.get(url)
search = driver.find_element_by_name('q')
search.send_keys("newyork pincode")
search.send_keys(Keys.RETURN) 

time.sleep(5) 
driver.quit()

您可以使用css selectorxpath来实现。

  • css 选择器*推荐

    div.IAznY div.title
    
  • Xpath

    //div[@class="IAznY"]//div[@class="title"]
    

添加WebDriverWait而不是time.sleep(..)以提高效率。

首先,您需要以下导入:

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions

find_element_by_*始终返回第一个元素,即使有许多元素具有相同的定位器也是如此。

因此,您可以使用以下代码:

search = driver.find_element_by_name('q')
search.send_keys("newyork pincode")
search.send_keys(Keys.RETURN)
element = WebDriverWait(driver, 10).until(expected_conditions.visibility_of_element_located((By.CSS_SELECTOR, 'div.IAznY div.title')))
print(element.text)

但是,如果您需要像您所说的那样处理multiple并且您不想使用第一个元素,那么您可以使用.find_elements_by_*.下面的代码是获取第二个元素的示例:

elements = WebDriverWait(driver, 10).until(expected_conditions.visibility_of_all_elements_located((By.CSS_SELECTOR, 'div.IAznY div.title')))
print(elements[1].text)

这是索引[1],在WebDriverWait实现中可以看到第一个代码和第二个代码的区别,即visibility_of_element_locatedvisibility_of_all_elements_located

诱导WebDriverWait并遵循 css 选择器来标识元素。

elements=WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, 'div.mlo-c div.title')))
print(elements[0].text)

在控制台上打印:

10001

您需要导入以下内容来执行上述代码。

from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

找到名为h998We mlo-c的类并获取第一个元素将为您提供第一个 PIN 码。

find_element_by_class_name('h998We mlo-c'),它将返回您之前询问的任何城市(例如德里(的所有密码,然后在div内获取文本以获取Pincode

https://selenium-python.readthedocs.io/api.html#selenium.webdriver.remote.webdriver.WebDriver.find_element_by_class_name

相关内容

  • 没有找到相关文章

最新更新