python - 使用 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)
解决方案
你有:
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 并提取文本或获取所有元素的属性。
推荐阅读
- php - 如何将图像保存在使用 POST ajax 发送的服务器上
- python - 如何获得矩阵中3个元素的最小总和
- sql - 无法使用 stuff 将 100000 行导出到变量
- java - 如何为更多不同的构建进行应用设计?
- scala - 如何在 sbt 库中为 1.0.0-M10 及以上版本设置依赖关系
- python - 根据多个条件将列的值填充到数据框的新列
- random - 如何从一个大组中创建固定数量的主题的子组?
- spring - 休息调用不检索存在的子类实体
- android - 页面未完全渲染并在 appium 中不断闪烁,但在手动完成时正确渲染
- asp.net-mvc - 将数据从文件 .cs 或 cshtml 文件的值发送到 js MVC