当前位置: 首页 > 面试题库 >

网络抓取程序找不到我可以在浏览器中看到的元素

宗政海
2023-03-14
问题内容

我正在尝试使用Requests和BeautifulSoup在https://www.twitch.tv/directory/game/Dota%202上获取流的标题。我知道我的搜索条件正确,但是我的程序找不到我需要的元素。

这是一个屏幕截图,显示了浏览器中源代码的相关部分:

浏览器的屏幕快照,显示了部分网页,以及使用开发人员工具/网络检查器的源代码。

HTML源代码为文本:

<div class="tw-media-card-meta__title">

  <div class="tw-c-text-alt">

    <a class="tw-full-width tw-interactive tw-link tw-link--button tw-link--hover-underline-none tw-link--inherit" data-a-target="preview-card-title-link" href="/weplayesport_en">

      <div class="tw-align-items-start tw-flex">

        <h3 class="tw-ellipsis tw-font-size-5" title="NAVI vs HellRaisers " BO5 | ODPixel &amp; S4 | WeSave! Charity Play">NAVI vs HellRaisers | BO5 | ODPixel &amp; S4 | WeSave! Charity Play</h3>

      </div>

    </a>

  </div>

</div>

这是我的代码:

import requests
from bs4 import BeautifulSoup

req = requests.get("https://www.twitch.tv/directory/game/Dota%202")

soup = BeautifulSoup(req.content, "lxml")

title_elems = soup.find_all("h3", attrs={"title": True})

print(title_elems)

当我运行它时,title_elems它只是一个空列表([])。

为什么我的程序找不到元素


问题答案:

在初始页面加载后,您感兴趣的元素是动态生成的,这意味着您的浏览器执行JavaScript,发出其他网络请求等以构建页面。请求只是一个HTTP库,因此不会做那些事情。

您可以使用Selenium之类的工具,甚至可以分析网络流量以获取所需的数据并直接发出请求。



 类似资料:
  • 我在用蟒蛇2。7带有。现在在我的webautomation脚本中,我将打开链接或URL并进入主页。现在我需要点击一些锚定标签来浏览其他页面。我一直到现在。现在,当我要进入一个新页面时,我需要从浏览器中获取新的,因为我需要将其传递给,以便进行网页抓取。所以现在我关心的是如何以动态的方式获得这样的URL? 如果有,请咨询!

  • 问题内容: 如何在Web浏览器中的.html页面上显示pdf? 问题答案: 我使用的是Google文档可嵌入的PDF查看器。这些文档不必上传到Google文档,但必须在线提供。

  • 问题内容: 我已经创建了一个简单的 应用程序(使用),带有联系表单,当用户单击“提交”时,我想生成并发送电子邮件。为此,我一直试图像这样使用: …但是我在导入过程中遇到了很多错误。 我是否在这里缺少某些东西,或者根本不是为在浏览器中使用而设计的?如果是这种情况,我应该考虑其他选择吗? 问题答案: node.js用于服务器端JavaScript,它允许您执行浏览器无法完成的许多工作。 除了mailt

  • 我们如何在网络浏览器中使用AWS Kinesis? 我对AWS的Kinesis流感兴趣,想知道我是否可以使用它将用户的活动日志直接从他们的浏览器发送到AWS。 AWS提供了一个可以在web浏览器中执行的JavaScript SDK,但是根据它的文档,该SDK需要凭证信息,因此,我认为在我的用例中使用它是不安全的。

  • 我试图使用Selenium Web Driver从页面中抓取一个元素,但是我似乎不知道如何抓取某个文本。我试图在下面的这行代码中找到“35330100:石油和天然气钻井平台和设备”这个刺。 我在笔记本中使用的语法给我带来了一个错误,如下所示 任何帮助都会有所帮助。 提前表示感谢。

  • tags:翻墙,浏览器 chrome 浏览器个人最喜欢的浏览器。 安装 在chrome官方下载适合的 amd 64位的 debian 版本,或者直接用这个下载链接下载最新版本: https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb 然后直接用 GDebi package installer 安装即可。 插

  • 问题内容: 有谁知道C / C ++代码来查找可用的网络接口? 我一直在寻找一些代码,但是大多数时候它们都很复杂。有没有简单的方法可以做到这一点? 问题答案: 请参见getifaddrs手册页。最后有一个示例程序。

  • 我尝试在我的办公室内联网连接中使用硒网络驱动程序启动火狐浏览器。收到错误消息: 线程“main”org.openqa.selenium.remote中出现异常。UnreachableBrowserException:无法启动新会话。可能的原因是远程服务器地址无效或浏览器启动失败。 [![Selenium Web驱动程序错误消息][2]][2] 谁能在这方面帮助我。