Algolia 爬虫未获取 google-codelabs-step 标签

Algolia crawler not fetching google-codelabs-step label

问题

我正在使用 Algolia Crawler 从使用 Codelabs 制作的网络应用程序中获取内容。我不明白为什么它会忽略我的请求,想知道如何获取 元素。

我做了什么:

爬虫无法识别 元素,我需要获取层次结构 lvl1.

我需要获取的是其中一个元素:

google-codelab-step label="" 
h2 is-upgraded="" class="step-title"

但是我做不到。 这是 html:

    <google-codelab-step label="" duration="" step="">
      <div class="">
        <div class="inner">
          <h2 is-upgraded="" class="step-title"> </h2>
    </google-codelab-step>

我的抓取工具是这样的:

    {
          indexName: "crawler_name",
          pathsToMatch: ["https://website.com/**"],
          recordExtractor: ({ helpers, $ }) => {
            const trainingLabel = $("#step-title").attr("h2");
            let returnLabel = trainingLabel ? trainingLabel : "";
            return helpers.docsearch({
              recordProps: {
                lvl1: returnLabel,
                content: "p, td, li",
                lvl0: {
                  selectors: ["#codelab-title > h1", "h1.title", "title"],
                  defaultValue: "default",
                },
                lvl2: "google-codelab-step h2",
                lvl3: "google-codelab-step h3",
                lvl4: "google-codelab-step h4",
                lvl5: "google-codelab-step h5, google-codelab-step td:first-child",
                lvl6: "google-codelab-step h6",
              },
            });
          },
        },

我目前能够获取:内容、lvl0、lvl2 和 lvl3。我尝试使用以下可能性获得 lvl1,但没有成功:

我非常感谢它对如何获取 lvl1 项目的任何帮助。

我通过使用基本模板而不是使用 Docusaurus 模板解决了我的问题,它附带了一些我不理解的信息。

这就是我现在的动作:

{
  indexName: "crawler_name",
  pathsToMatch: ["https://url.com/**"],
  recordExtractor: ({ $, url }) => {
    const trainingLabel = $("google-codelab").attr("id");
    const trainingSubModules = $("google-codelab-step").attr("label");
    const titleHome = $("h1")
      .map((i, e) => $(e).text())
      .get();
    const moduleDescription = $("div.description")
      .map((i, e) => $(e).text())
      .get();
    const subtitle = $("h2")
      .map((i, e) => $(e).text())
      .get();
    const items = $("h3")
      .map((i, e) => $(e).text())
      .get();
    return [
      {
        titleHome: titleHome,
        trainingLabel: trainingLabel,
        trainingSubModules: trainingSubModules,
        moduleDescription: moduleDescription,
        subtitle: subtitle,
        items: items,
        objectID: url.href,
      },
    ];
  },
},

通过创建自己的标签,而不是使用预设的层次结构和助手,我有了更多的控制权。