我正在尝试抓取具有React元素的网页,该元素在几秒钟后隐藏下拉菜单。
这是您第一次进入该页面和我要抓取的标签时看到的内容。
我正在尝试刮除不要错过的部分! 24人正在观看此活动
几秒钟后,该标签消失,并被另一个下拉元素替换,该元素表示以适当的价格获得通知!
源代码显示观看次数下拉菜单在几秒钟后被隐藏。代码的顶部显示了新的下拉列表,而div类中带有'hide'的底部是我要抓取的下拉列表。
我尝试获取 div class =“ urgency-component-container ”,但是由于它被隐藏,它什么也不返回。我也尝试获取 div class =“ dropdown-header-item“ ,但这也没有返回任何内容。
我已经尝试过将XPath放入dropdown-header-item(// * [@ id =“ dropdown-header”] / div / div 1),但这也不起作用。
如何在几秒钟后抓取“隐藏”的下拉菜单?谢谢
编辑:
我使用的代码是
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome()
url = 'https://www.stubhub.com/anaheim-ducks-tickets-anaheim-ducks-anaheim-honda-center-11-14-2019/event/104217448/?sort=price+asc'
driver.get(url)
content = driver.find_element_by_class_name('dropdown-header-item')
如果我立即执行代码,则会收到错误
NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".dropdown-header-item"}
但是如果我等待几秒钟并运行它,我会得到
Get notified at the right price!Set price alert
答案 0 :(得分:1)
请尝试一下,让我知道如何进行。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
driver = webdriver.Chrome('/usr/local/bin/chromedriver') # Optional argument, if not specified will search path.
driver.delete_all_cookies()
driver.implicitly_wait(15)
driver.maximize_window()
url = 'https://www.stubhub.com/anaheim-ducks-tickets-anaheim-ducks-anaheim-honda-center-11-14-2019/event/104217448/?sort=price+asc'
driver.get(url)
driver.refresh()
content = driver.find_element_by_xpath("//div[@class='urgency-wrapper']//div[@class='dropdown-header-item']").text
print content
driver.quit()
别错过。 28人正在观看此活动。
答案 1 :(得分:0)
看起来网站不喜欢抓取,并且会向初学者抛出验证码。如果没有验证码,那么您希望最后一个元素的.textContent属性与类dropdown-header-item
匹配
from selenium import webdriver
d = webdriver.Chrome()
d.get('https://www.stubhub.com/anaheim-ducks-tickets-anaheim-ducks-anaheim-honda-center-11-14-2019/event/104217448/?sort=price%20asc')
elems = d.find_elements_by_css_selector('.dropdown-header-item')
if len(elems) > 0:
print(d.find_elements_by_css_selector('.dropdown-header-item')[-1].get_attribute('textContent').replace('\xa0', ' '))
else:
print('Nada')