【问题标题】:Scraping Java Driven site with Selenium, BS使用 Selenium,BS 抓取 Java 驱动的站点
【发布时间】:2019-02-01 12:13:42
【问题描述】:

我是 Python 新手

我正在尝试从其网站获取打印机计数器值。该网站是用 Javascript 编写的,我无法从中获取任何信息。

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

inspect elements

我尝试过使用 selenium、requests、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 或其他内容的文本框。

我可以从其他网站成功获取元素,但此打印机的除外。

感谢您的帮助

【问题讨论】:

  • 如果您提供实际的 url 以及您想要的输出应该是什么示例,这将有所帮助。
  • 网址是本地的,所以很遗憾无法访问。
  • 好的。说得通。我能想到的只有 Arran Duff 下面的建议。

标签: python selenium web-scraping beautifulsoup webdriver


【解决方案1】:

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

 driver.switch_to.frame(0)

如果是第一帧,上面应该可以工作。然后driver.page_source 和你的定位器应该开始工作了。

我更详细地解释了这一点in this answer

【讨论】:

    【解决方案2】:

    打印出来的是什么?

    我不这么认为,这一行会返回html文本

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

    据我所知,您需要使用 page_source 属性来访问 html...

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

    【讨论】:

    • 都不给我任何页面变量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-27
    • 2019-09-29
    • 1970-01-01
    • 2021-12-04
    • 2020-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多