【发布时间】:2021-07-07 04:30:55
【问题描述】:
我正在练习尝试抓取我大学的课程目录。我在 Python 中有几行代码可以在 Chrome 中打开 url,然后单击搜索按钮以调出课程目录。当我使用find_elements_by_xpath() 提取短信时,它返回空白。当我在 Chrome 上使用开发工具时,那里肯定有文字。
from selenium import webdriver
import time
driver = webdriver.Chrome()
url = 'https://courses.osu.edu/psp/csosuct/EMPLOYEE/PUB/c/COMMUNITY_ACCESS.OSR_CAT_SRCH.GBL?'
driver.get(url)
time.sleep(3)
iframe = driver.find_element_by_id('ptifrmtgtframe')
driver.switch_to.frame(iframe)
element = driver.find_element_by_xpath('//*[@id="OSR_CAT_SRCH_WK_BUTTON1"]')
element.click()
course = driver.find_elements_by_xpath('//*[@id="OSR_CAT_SRCH_OSR_CRSE_HEADER$0"]')
print(course)
我正在尝试从元素“OSU_CAT_SRCH_OSR_CRSE_HEADER”中提取文本。我不明白为什么它不返回文本值,尤其是当我使用开发工具看到它包含文本时。
【问题讨论】:
-
你没有在等待。 Selenium 的痛点之一是它可以实时工作。如果站点需要 1/2 秒来更新页面,那么您需要等待。有一种方法可以说“等到这个元素出现”,但我不记得 API 名称了。
-
您是否尝试了更多时间或再次延迟?看起来内容还没有准备好。
标签: python selenium parsing selenium-webdriver web-scraping