【问题标题】:How to scrape a json element using selenium?如何使用 selenium 抓取 json 元素?
【发布时间】:2019-06-02 08:46:09
【问题描述】:

我需要从 json 元素中抓取数据。单击该元素会打开一个弹出窗口,其中包含我需要的数据。

我尝试使用 selenium 单击元素,但它返回 None

driver.find_element_by_link_text('View details').click()

网址 - https://play.google.com/store/apps/details?id=in.amazon.mShop.android.shopping

期望的输出 - (这个应用程序可以访问: 贮存 修改或删除 USB 存储的内容 读取 USB 存储的内容 联系人 阅读您的联系人 在设备上查找帐户 麦克风 录制音频 短信 阅读您的短信(短信或彩信) 接收短信 (SMS) 发送短信 照片/媒体/文件 修改或删除 USB 存储的内容 读取 USB 存储的内容 相机 拍照和录像 电话 读取手机状态和身份 身份 添加或删除帐户 在设备上查找帐户 Wi-Fi 连接信息 查看 Wi-Fi 连接 地点 精确定位(基于 GPS 和网络) 大致位置(基于网络) 设备 ID 和通话信息 读取手机状态和身份 其他 阅读主页设置和快捷方式 从互联网接收数据 防止设备休眠 查看网络连接 控制手电筒 在设备上使用帐户 安装快捷方式 创建帐户并设置密码 连接和断开 Wi-Fi 完全网络访问 控制振动 在启动时运行)

这是 json 元素

这包含所需的文字

【问题讨论】:

  • 发布网址和所需的输出
  • 你遇到了什么错误?
  • 它返回无。如何获取文本?
  • 可以分享html cofde吗?
  • 我已经发布了网址。你可以从那里得到它

标签: python selenium beautifulsoup


【解决方案1】:

您的None 语句在没有上下文的情况下对我们没有任何意义,即导航到页面并单击链接的一段代码。错误可能存在于任何地方。

一些提示:

  1. 始终使用Explicit Waits 以等待元素出现,例如:

    driver.get("https://play.google.com/store/apps/details?id=in.amazon.mShop.android.shopping")
    
    WebDriverWait(driver,10).until(EC.presence_of_element_located((By.LINK_TEXT, "View details")))
    driver.find_element_by_link_text('View details').click()
    
    WebDriverWait(driver,10).until(EC.presence_of_element_located((By.XPATH, "//div[contains(text(),'This app has access to')]")))
    permissions = driver.find_element_by_xpath("//div[contains(text(),'This app has access to')]/parent::*")    
    

    更多信息:How to use Selenium to test web applications using AJAX technology

  2. 为了获取 HTML 元素的文本,您可以使用 innerText DOM object 属性,使用 get_attribute function,例如:

    text = permissions.get_attribute("innerText")
    
  3. 就是这样,你应该得到想要的文本作为变量:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-09
    • 2019-05-09
    • 1970-01-01
    • 2022-01-19
    • 2015-10-29
    • 1970-01-01
    相关资源
    最近更新 更多