【问题标题】:Scraping an element as it is stored in the database抓取存储在数据库中的元素
【发布时间】:2021-02-05 13:36:16
【问题描述】:

我正在使用 python 和 scrapy 抓取一个网站,以完成大学作业。 我在网站上发现了一个应该有评级的元素。评分显示为整数,但我认为它在数据库中存储为小数。

有没有办法获得存储在数据库中的评级?如果是这样,我需要学习哪些工具和概念?

我尝试抓取的页面示例:https://www.old-games.org/games/bond(用希伯来语编写)。
这就是我所说的元素: rating element
这就是html代码:

<td class="game_specs">7/10</td>

期望的结果是获取存储在数据库中的“7”的实际值,例如“7.32”。
该网站没有用于从中获取信息的 API。

我尝试自行搜索,但由于我是网络开发/抓取领域的新手,我找不到任何解决方案(可能是因为我不知道术语)。

【问题讨论】:

  • 如果站点没有 HTML 以外的 API,那么您需要访问数据库。可以联系所有者/管理员直接或 api 访问?
  • "有没有办法获得存储在数据库中的评级?"不。为什么这对你很重要?
  • @Andy Lester ,我打算将这些值用于一些计算,所以我希望它们更准确。我知道这就是我必须使用的。

标签: web-scraping


【解决方案1】:

如果你正在抓取一个网站,你甚至不知道如果有一个数据库,更不用说数据库中有什么了。据您(或您的代码)所知,有人坐在那里手动输入这些评分,或者在您每次访问页面时随机生成评分的函数。

另一种看待它的方式是,如果我让告诉我“真实”评级是什么,你会看哪里?您可以查看显示的页面;你可以查看 HTML 源代码,以及任何 JS、AJAX 调用等。如果你能在其中找到它,你可以为它写一个爬虫;如果你不能,你就不能。

想象一下,有一个特殊的技巧可以读取世界上任何网站的数据库。现在您可以前往亚马逊并应用该技巧来查找留下评论的人或销售市场商品的供应商的个人详细信息!

任何网站的所有者都可以选择向您提供哪些信息以及将哪些信息保密。除非网站运营者不小心留下了一些他们打算保密的公开信息(而且看起来太难了因为这些错误很可能是违法的)。

【讨论】:

  • 让我看看我是否理解你正确的:如果我在 chrome-dev-tools 上禁用 javascript,然后再次加载页面并且我需要的所有数据仍然存在 - 这意味着没有可能的方法要知道数据库中存储了什么,对吗?
  • @Benny 好吧,很难证明是否定的:它可能在不同的页面上,或者在不同的代码位中,但是否存在取决于网站的运营商,不取决于你。你不能强迫亚马逊告诉你我的电子邮件地址,你所能做的就是四处寻找他们是否在某个地方暴露了它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-15
相关资源
最近更新 更多