首页 > 解决方案 > 使用 CSS Selector/Selenium 查找元素

问题描述

我的代码转到一个网站,单击(表的)行的每个迭代,这会打开一个新窗口。

我想在这个新窗口中抓取 1 条信息,但是我很难使用 CSS 选择器来获取这个字段(Faculty

from selenium import webdriver

from bs4 import BeautifulSoup
import pandas as pd
import time
import requests
driver = webdriver.Chrome()
productlink=[]
driver.get('https://aaaai.planion.com/Web.User/SearchSessions?ACCOUNT=AAAAI&CONF=AM2021&USERPID=PUBLIC&ssoOverride=OFF')
time.sleep(3)
page_source = driver.page_source
soup = BeautifulSoup(page_source,'html.parser')
productlist=driver.find_elements_by_class_name('clickdiv')

for item in productlist:
    item.click() #opens the new window per each row
    time.sleep(2)
    faculty=driver.find_elements_by_xpath('//*[@id="W1"]/div/div/div/div[2]/div[2]/table/tbody/tr[7]/td/table/tbody/tr/td[2]/b')
    print(faculty)
    driver.find_element_by_class_name('XX').click()#closes window
    time.sleep(1)

标签: pythoncssseleniumcss-selectors

解决方案


你有:

 faculty=driver.find_elements_by_xpath('//*[@id="W1"]/div/div/div/div[2]/div[2]/table/tbody/tr[7]/td/table/tbody/tr/td[2]/b')

所以你有一个元素数组;当你打印时,你会有不同的硒元素。如果您只有一个元素,则可以使用 find_element_by_xpath 而不是 find_elements_by_xpath。

如果要获取教师值,并且您有一个数组,则需要执行 for 并提取文本或获取所有元素的属性。


推荐阅读