我在内容中有 CSS 标签,并且在嵌入式管理员设置中识别了 CSS 选择器,但爬虫没有抓取到它们。我认为这是因为我的网站是用 React 构建的,CSS 选择器无法访问。我该如何在 React 网站上使用此功能?
这可能是原因之一,不过我预期 Discourse 向该网站发出的请求应返回 HTML。另一个需要排查的问题是:Discourse 会缓存从外部站点拉取的内容,缓存时间为 10 分钟。这意味着,如果您正在调整“允许的嵌入选择器”(allowed embed selectors)站点设置,可能需要等待最多 10 分钟才能看到新设置值生效。
如果您的 Discourse 站点尚未投入生产,并且您可以访问该站点的 Rails 控制台,可以通过在控制台中执行 Rails.cache.clear 来清除缓存。
有关该设置的更多详细信息,请参阅:https://meta.discourse.org/t/configure-the-allowed-embed-selectors-setting/134481/1。
编辑:我“认为”嵌入功能目前按预期工作。只是对于某些网站来说,配置起来比较棘手。我打算将这个话题移动到 Support 板块。
几个月前,我创建了一个 Contribute > Feature 话题,建议 Discourse 应找到更好的方式来解析嵌入帖子:https://meta.discourse.org/t/topic-embedding-needs-some-love/262763。如果在此之前没有人着手处理,我会尽快投入时间来解决这个问题。
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 方法中的代码来确认这一点。
太棒了,谢谢!