嵌入式帖子:无法从 React 网站读取 CSS 选择器

我在内容中有 CSS 标签,并且在嵌入式管理员设置中识别了 CSS 选择器,但爬虫没有抓取到它们。我认为这是因为我的网站是用 React 构建的,CSS 选择器无法访问。我该如何在 React 网站上使用此功能?

这可能是原因,尽管我期望 Discourse 对网站发出的请求会返回 HTML。另一个需要研究的是 Discourse 会缓存从外部网站抓取的内容 10 分钟。这意味着,如果您正在调整 allowed embed selectors 站点设置,您将不得不等待最多 10 分钟才能看到新设置值的效果。

如果您的 Discourse 站点尚未上线,并且您可以访问 Discourse 站点的 Rails 控制台,您可以使用 Rails.cache.clear 从控制台清除缓存。

有关该设置的一些附加详细信息在此处:https://meta.discourse.org/t/configure-the-allowed-embed-selectors-setting/134481/1。

编辑:我认为嵌入工作正常。只是配置起来对某些网站来说有点棘手。我将把这个话题移到 #support。

我几个月前创建了一个 Feature 主题,建议 Discourse 应该找到一种更好的方法来解析嵌入的帖子:https://meta.discourse.org/t/topic-embedding-needs-some-love/262763。如果在此之前没有人处理,我将很快投入一些时间来处理它。

3 个赞

Discourse 向爬虫展示了不同的视图。要查看它,您需要关闭 JavaScript 访问。

我不认为嵌入式帖子会被爬取,因为它们不存在于嵌入它们的网站上。

您好,我指的是 Discourse 如何使用嵌入式帖子功能抓取我的 React 网站。由于它查看我 React 页面的方式,我很难告诉它在 Discourse 帖子中包含哪些内容。

如果这有帮助,用于引入外部帖子的代码在这里:discourse/app/models/topic_embed.rb at main · discourse/discourse · GitHub

如果您可以访问您网站的 Rails 控制台,您可以进行测试以大致了解正在发生的情况。例如:

TopicEmbed.find_remote("https://blog.discourse.org/2023/04/introducing-discourse-ai/")

我在 find_remote 方法末尾调用的 parse_html 方法遇到了问题。Ruby Readability 在处理某些 HTML/CSS 时会遇到困难。

您的 React 网站也可能没有返回 HTML。您可以通过在控制台中分步运行 find_remote 方法中的代码来确认这一点。

2 个赞

太棒了,谢谢!