【问题标题】:Selenium: Get variable data from <script type> tag in PythonSelenium:从 Python 中的 <script type> 标签获取变量数据
【发布时间】:2020-12-08 16:59:32
【问题描述】:

所以我正在尝试使用 selenium 从网站上抓取数据,因为 selenium 和网络抓取仍然是新手,我被卡住了。我想抓取&lt;script type&gt; 标签下的一些数据,标签如下所示:

...
...

<script type="text/javascript">
  var myData_1 = {"name" : ..... };
  var myData_2 = {......};
  var myData_id = 4565843;
  var myData_mapping = {.....};
</script>

...
...

所以我需要抓取此脚本标记中存在的数据,即所有 var 数据值。到现在我只写了这么多:

from selenium import webdriver
import pandas as pd

driver = webdriver.Chrome('/home/slothfulwave612/chromedriver_linux64/chromedriver')

driver.get('https://www.example.com') ## not the actual site

html = driver.page_source

print(html)

driver.close()

这只是打印网站的源代码,我应该在这里添加什么,以便我可以从&lt;script type标签中抓取数据。有人可以帮忙吗?

【问题讨论】:

  • 试试re.search('&lt;script&gt;(.*)&lt;/script&gt;', html)
  • 它返回None,但这对我有用content = driver.execute_script("return myData_1;")

标签: python selenium web-scraping


【解决方案1】:

使用方法.find_element_by_xpath()(docs)

script_label = driver.find_element_by_xpath("//script[@type = 'text/javascript']")

然后你可以刮掉内部元素。

【讨论】:

  • 在打印 script_label 时,我得到以下结果:&lt;selenium.webdriver.remote.webelement.WebElement (session="bdf16c59641dc3dddb89ba463e756536", element="0.5478719429608367-1")&gt; 如何获取数据
  • script_label.text 没有打印任何内容。
  • content = driver.execute_script("return myData_1;") 我找到了这个并且成功了,顺便说一句谢谢
  • script_label.get_attribute("innerHTML").text
【解决方案2】:

如果要打印脚本标签的所有内容,请使用 innerHTML 属性来打印。

ele = driver.find_element_by_xpath("//script[@type = 'text/javascript']")
print(ele.get_attribute("innerHTML"))

输出:

var myData_1 = {"name" : ..... };

var myData_2 = {......};

var myData_id = 4565843;

var myData_mapping = {.....};

【讨论】:

    猜你喜欢
    • 2018-10-29
    • 1970-01-01
    • 2014-01-13
    • 1970-01-01
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 1970-01-01
    相关资源
    最近更新 更多