【问题标题】:Getting rid of \r\n text showing up in web scraper摆脱网络刮板中显示的 \r\n 文本
【发布时间】:2021-03-31 20:46:48
【问题描述】:

我正在使用异步来获取网站中的表格标签。它工作得很好,但是它将所有 \r\n 标记放在我的表格底部。我不知道如何在我的 .match() 中摆脱它们。有人有答案吗?

            var fetchCommand = "https://api.allorigins.win/get?url=" + encodeURIComponent("sampleurl");
            (async () => {
                const response = await fetch(fetchCommand);
                const text = await response.text();
                let result = text.match(/(?<=\<table>).*(?=\<\/table>)/);       
                console.log(result);
                let html_content = document.getElementById("table");
                html_content.innerHTML = result;
                return html_content;
            })()
</script>```

【问题讨论】:

  • match 函数不是用来替换的,请尝试使用replace 或replaceAll(replaceAll 需要以“/g”结尾,以“/”开头)。 “‘Hello 1 1 World’.replaceAll(/1/g,”2”)”输出到“Hello 2 2 World”

标签: javascript newline


【解决方案1】:

通过使用DOMParser() 解析响应JSON 然后使用querySelector() 来获取表格,这对我有用。您可能想要查找所有带有querySelectorAll() 的表。我还在表格元素上使用outerHTML 将其添加到DOM,因为innerHTML 去除了html 标记。

function fetchTable() {
  fetch(`https://api.allorigins.win/get?url=${encodeURIComponent('https://www.w3schools.com/html/html_tables.asp')}`)
    .then((res) => {
      return res.json();
    })
    .then((data) => {
      const parser = new DOMParser();
      const htmlDoc = parser.parseFromString(data.contents, 'text/html');
      const firstTable = htmlDoc.querySelector('table');

      html_content.innerHTML = firstTable.outerHTML;
    })
}

编辑:这是一个工作示例:https://jsfiddle.net/q0dj7rvz/

如果您仍然遇到行尾字符问题,请将 URL 与表格一起发布。

【讨论】:

  • 完美运行。非常感谢!
  • @TylerShields 不客气。请不要忘记将我的答案标记为“已解决”。
猜你喜欢
  • 2013-06-14
  • 2015-10-03
  • 2011-08-26
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 2014-07-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多