gpt4 book ai didi

python - 使用Selenium导航到页面后如何使用BeautifulSoup

转载 作者:太空宇宙 更新时间:2023-11-04 02:50:02 25 4
gpt4 key购买 nike

我已经成功地使用 selenium 在网站上点击了几个页面,现在我需要 BeautifulSoup 来解析数据。问题是出于某种原因 bs4 认为我在上一页,所以我的 find_all 调用都不起作用。下面是我的代码片段。 calendar_search.click() 调用正在加载所需页面。我做了一个夸张的隐式等待让页面加载。根据之前的 SO 问答,我在下面设置了 htmlsoup 变量。我投入另一个隐含的等待好的措施。当我调用 prettify 时,我可以看到我正在从 calendar_search.click() 之前所在的页面打印 html。如何加载当前页面?谢谢。

calendar_search.click()

browser.implicitly_wait(30)

html = browser.page_source
browser.implicitly_wait(30)
soup = bs4.BeautifulSoup(html, 'html.parser')

print(soup.prettify())

编辑:尽管有 1000 秒,我还是尝试了显式等待(见下文)并打印了异常! Edit2:部分页面必须已加载,因为我得到了我制作的 find_all 列表的 x[0]。但是,我无法重现结果。

try:
element = WebDriverWait(browser,
1000).until(EC.presence_of_element_located((By.CLASS_NAME,
'classname')))
print("Page is ready!")
except TimeoutException:
print("Loading took too much time!")

最佳答案

由于某些奇怪的原因,使用 browser.implicitly_wait() 不起作用,但 time.sleep() 效果很好。我刚刚将 browser.implicitly_wait(30) 更改为 time.sleep(30) 并且它运行良好。
我用过 chrome 驱动程序。不要忘记将 chrome 驱动程序放在工作目录中,以避免 driver not found 错误。

import time
from bs4 import BeautifulSoup
from selenium import webdriver

url = "https://www.southwest.com/flight/"
browser = webdriver.Chrome()
browser.get(url)

departure = browser.find_element_by_id("originAirport_displayed")
destination = browser.find_element_by_id("destinationAirport_displayed")

departure.send_keys("Chicago (Midway), IL - MDW")
destination.send_keys("New Orleans, LA - MSY")

button = browser.find_element_by_id("submitButton")
button.click()

time.sleep(30)
html = browser.page_source
soup = BeautifulSoup(html, "lxml")
print(soup.prettify())

browser.save_screenshot(browser.title + ".JPEG")

browser.close()
browser.quit()

编辑lxml 解析器比 html 解析器更快。在官方documentation BeautifulSoup 他们推荐使用 lxml 解析器。

关于python - 使用Selenium导航到页面后如何使用BeautifulSoup,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44143365/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com