用Selenium,BS刮取Java驱动的站点

时间:2019-02-01 12:13:43

标签: python selenium web-scraping beautifulsoup webdriver

我是相当新的Python

我正在尝试从其网站获取打印机的计数器值。该网站使用Javascript,我无法从中刮nothing。

网站元素看起来像这样,我需要突出显示的元素上的值。

inspect elements

我已经使用硒,请求,webdriver的,beautifulsoup试过。

试过所有webdriver.find方法等

我最新的代码看起来是这样,我想一堆其他的东西,但一无所获。

from bs4 import BeautifulSoup
import requests
from selenium import webdriver


#url = requests.get('http://url')
#soup = BeautifulSoup(url.text, 'lxml')


driver = webdriver.Chrome('C:/Chrome/Driver/Path')
url = 'http://url'
get = driver.get(url)

html = driver.execute_script("return document.documentElement.outerHTML")

print(html)

我无法从网页上抓取任何内容,无法使用Xpath,Class,ID或其他任何内容进入文本框。

我可以从该打印机的其他网站成功获取元素。

感谢帮助

2 个答案:

答案 0 :(得分:0)

这是什么打印出来?

我不认为,这条线将返回HTML文本

driver.execute_script("return document.documentElement.outerHTML")

您需要使用page_source属性来访问HTML据我知道...

 driver.execute_script("return document.documentElement.outerHTML")
 html = driver.page_source

答案 1 :(得分:0)

查看图像中的元素面包屑,似乎您的内容在框架内。 Selenium将每个帧视为一个单独的文档。您需要先切换到框架,然后才能对其内容进行操作。

 driver.switch_to.frame(0)

如果它是第一帧,则上面应该起作用。然后driver.page_source和您的定位器应该开始工作。

我对此进行了更详细的解释in this answer