使用selenium抓取javascript内容
我正在尝试使用selenium和geckodriver从一个网站上抓取javascript内容,但我得到了任何数据。下面是javascript代码使用selenium抓取javascript内容,javascript,python-2.7,selenium,Javascript,Python 2.7,Selenium,我正在尝试使用selenium和geckodriver从一个网站上抓取javascript内容,但我得到了任何数据。下面是javascript代码 <div _ngcontent-c2="" class="header-wrapper"> <div _ngcontent-c2="" class="title">Suda Office</div> <div _ngcontent-c2="" class="update">Jul 05
<div _ngcontent-c2="" class="header-wrapper">
<div _ngcontent-c2="" class="title">Suda Office</div>
<div _ngcontent-c2="" class="update">Jul 05 11:07 AM</div>
</div>
<div _ngcontent-c2="">
<div _ngcontent-c2="" class="item-row title-headers">
<div _ngcontent-c2="" class="item-col head1">Route</div>
<div _ngcontent-c2="" class="item-col head2">Destination</div>
<div _ngcontent-c2="" class="item-col">
<div _ngcontent-c2="" class="head3 head3-height">ETA</div>
</div>
</div>
<div _ngcontent-c2="">
<div _ngcontent-c2="" class="alternet-color">
<div _ngcontent-c2="" class="item-row item-eta-row">
<div _ngcontent-c2="" class="item-col eta-route">15 T</div>
<div _ngcontent-c2="" class="item-col eta-destination">
<marquee _ngcontent-c2=""> Charbagh</marquee></div>
<div _ngcontent-c2="" class="item-col eta-col">
<div _ngcontent-c2="" class="eta-display-wrapper">
<div _ngcontent-c2="" class="display">
<span _ngcontent-c2="" class="space"></span>
<span _ngcontent-c2="" class="currentTiming">10 min</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
但是a=[]
是输出。偶数d=driver.find\u elements\u by\u class\u name(“currentTiming”)
给出以下输出
[<selenium.webdriver.firefox.webelement.FirefoxWebElement (session="6b1f2344-8e8a-4f48-a29a-54610179d62f", element="38e7ce58-ea66-4461-bee7-f81ac414595b")>]
[]
如何使用selenium从页面获得正确的输出?问题可能出在
项目col eta route
类名上。在HTML中可以有数百个这样的类
您可以尝试使用此css选择器来代替:
div[_ngcontent-c2][class='item-col eta-route']
获取15 T值
引入webdriver wait将是提高脚本稳定性的好主意
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[_ngcontent-c2][class='item-col eta-route']")))
print(element.text)
用于提取值:
marquee_text = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[_ngcontent-c2][class='item-col eta-destination'] marquee")))
print(marquee_text.text)
您需要导入以下内容:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
问题可能出在
项目col eta route
类名上。在HTML中可以有数百个这样的类
您可以尝试使用此css选择器来代替:
div[_ngcontent-c2][class='item-col eta-route']
获取15 T值
引入webdriver wait将是提高脚本稳定性的好主意
wait = WebDriverWait(driver, 10)
element = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[_ngcontent-c2][class='item-col eta-route']")))
print(element.text)
用于提取值:
marquee_text = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "div[_ngcontent-c2][class='item-col eta-destination'] marquee")))
print(marquee_text.text)
您需要导入以下内容:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
如果有多个
class=“item col eta destination”
,该怎么办?我会使用上面的代码获取所有这些元素吗?看看HTML dom结构中是否有多个条目,然后selenium将选择第一个元素。您可以使用此css选择器div[\u ngcontent-c2][class='item-col eta destination']
,让我知道这是否有用。如果有多个class='item col eta destination'
?我会用上面的代码得到它们吗?看看HTML dom结构中是否有多个条目,然后selenium将选择第一个元素。你可以使用这个css选择器div[\u ngcontent-c2][class='item-col eta destination']
,让我知道这是否有用。