使用Selenium从Javascript网页派生文本

使用Selenium从Javascript网页派生文本,javascript,python,html,selenium,Javascript,Python,Html,Selenium,我试图从以下网站中提取文本“该站由Delta Flow项目办公室管理”:。此行位于div类stationContainer下。因为这是一个动态网页,所以我使用selenium来派生html 这是网站上的html 这是我的代码: from selenium import webdriver from selenium.webdriver.common.by import By browser = webdriver.Chrome() url = "https://waterdata.usgs.

我试图从以下网站中提取文本“该站由Delta Flow项目办公室管理”:。此行位于div类
stationContainer
下。因为这是一个动态网页,所以我使用selenium来派生html

这是网站上的html

这是我的代码:

from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
url = "https://waterdata.usgs.gov/ca/nwis/uv?site_no=381504121404001"
browser.get(url) #navigate to the page
innerHTML = browser.execute_script("return document.body.innerHTML")
elem = browser.find_elements_by_xpath("//div[@class='stationContainer']")

print (elem)
我从打印消息中获得此结果:

selenium.webdriver.remote.webelement.webelement(session=“96fc124c0e2d1fd4cd86f61db272d52a”,element=“0.5862443940581294-1”)


我希望通过搜索div类来派生文本,但似乎我的方法不对。

elem
是一个列表而不是字符串。试试这个:

elem = browser.find_elements_by_xpath("//div[@class='stationContainer']")[0]
print elem.text
打印出所有的内容。因此,您可能需要一个更好的选择器或一种解析其余部分的方法。

print(elem.text)

elem
是WebElement对象,因此是打印的消息。如果要访问文本,需要在末尾添加
.text
,或者如果要获取其他属性,可以执行类似
elem.get\u属性(“innerHTML”)
的操作


此外,由于div元素有很多其他文本,因此您将获得比您想要的多得多的文本。我没有查看过其他类似的页面,但也许您可以提取div的html中


之间的内容

好吧,您想要废弃的内容实际上不是动态的。您可以使用获取
div类stationContainer
内容。让这有点挑战性的是,您正在搜索的元素不在某些标记之间。因此,解决此问题的方法是通过简单的字符串操作来提取


标记之间的内容,如下所示:

from bs4 import BeautifulSoup
from requests import get

soup = BeautifulSoup(get('https://your_url_here').text, "html.parser")

for i in soup.find_all('div', attrs={'class':"stationContainer"}):
    print str(i).split('</form>')[1].split('<br/><br/>')[0].strip()
从bs4导入美化组
从请求导入获取
汤=美汤https://your_url_here“).text,“html.parser”)
对于汤中的i.find_all('div',attrs={'class':“stationContainer”}):
打印str(i).split(“”)[1]。split(“

”)[0]。strip()

这段代码会产生适当的结果

您可以获取页面源代码,然后使用像bs4或bs4这样的解析库lxml@whackamadoodle3000,当我获取页面源代码时,它不会标识这行文本,因为它是从JSU呈现的。请使用selenium的get page source并等待,以便javascript可以呈现它并检查以下内容: