热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用BS4从隐藏的html(弹出窗口)获取数据

如何解决《使用BS4从隐藏的html(弹出窗口)获取数据》经验,为你挑选了2个好方法。

我试图在维基百科的弹出窗口中删除链接的名称.因此,当您在维基百科中悬停链接时,它会从该链接的介绍中显示一些小片段.我需要抓取这些信息,但我不确定它在源头中的位置.当我检查元素时(因为它弹出)这是html(对于这个例子,我将鼠标悬停在链接"希腊语"上)

 

The Ancient Greek language includes the forms of Greek...(a bunch more text)...

我需要提取的是href ="/ wiki/Ancient_Greek"但是当我没有悬停链接时,这段html消失了.有没有办法(用BS4和python)用我正在抓取的源html提取这些信息?

编辑:我无法承担额外的网页调用,因为项目需要很长时间才能运行.如果无论如何都要改变我检索源的方式,这样我就可以获得有用的弹出信息.这个项目非常庞大,获取此弹出信息至关重要.

任何不需要完全重建项目的建议都非常感激 - 我正在使用urllib来获取源(带请求)和bs4来完成.



1> stx101..:

在您的问题中,您说"......无法承担额外的网页呼叫......"但这就是您的浏览器在幕后所做的事情.您正在查看的页面的html不包含您需要的内容.

为了证明这一点:

    在浏览器中,打开一个Wikipedia页面,例如Greek.

    打开"开发人员工具"窗口(Chrome中的Ctrl + Shift + i).

    单击"网络"选项卡,确保红色按钮亮起,以便记录所有Web请求.

    将鼠标悬停在页面中的链接上,例如Ancient Greek.

    您将看到悬停在链接上的行为会触发对Ancient_Greek摘要页面的GET请求.

    单击网络选项卡日志中的"Ancient_Greek"以显示请求的详细信息.

    单击右侧的"响应"选项卡.

    您应该看到包含名为"extract_html"的字段的JSON响应,其中包含您需要的内容: "

    The Ancient Greek language includes the forms...

因此,为了获得您需要的信息,每次遇到链接时都必须向GET请求https://en.wikipedia.org/api/rest_v1/page/summary/something



2> 小智..:

弹出窗口和其他数据只能通过Javascript动态显示,你不能只使用urllib之类的东西来抓取数据.

您可以使用像splinter或selenium这样的浏览器控制器,它允许您自动悬停或单击事物以显示弹出窗口,然后提取其数据.获得弹出式HTML后,您可以使用BS4进行清理.

例如:

from splinter import Browser
browser = Browser()
browser.visit("http://google.com")
button = browser.find_by_name('button1')
button.click()


推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 如何在HTML中获取鼠标的当前位置
    本文介绍了在HTML中获取鼠标当前位置的三种方法,分别是相对于屏幕的位置、相对于窗口的位置以及考虑了页面滚动因素的位置。通过这些方法可以准确获取鼠标的坐标信息。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • Ubuntu安装常用软件详细步骤
    目录1.GoogleChrome浏览器2.搜狗拼音输入法3.Pycharm4.Clion5.其他软件1.GoogleChrome浏览器通过直接下载安装GoogleChro ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文讨论了编写可保护的代码的重要性,包括提高代码的可读性、可调试性和直观性。同时介绍了优化代码的方法,如代码格式化、解释函数和提炼函数等。还提到了一些常见的坏代码味道,如不规范的命名、重复代码、过长的函数和参数列表等。最后,介绍了如何处理数据泥团和进行函数重构,以提高代码质量和可维护性。 ... [详细]
author-avatar
手机用户2602926791
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有