NodeJS,Cheerio。如何在不知道选择器的情况下查找文本?
NodeJS, Cheerio. How to find text without knowing selectors?
我正在尝试查找特定文本。就我而言,我不知道目标的 HTML 代码中的选择器、元素、父级或任何其他内容。只是想看看这个页面是否有 robots.txt。通过搜索 'User-agent:'.
来做到这一点
有人知道如何在解析中搜索特定文本,而不知道页面上的任何其他信息吗?
getApiTest = async () => {
axios.get('http://webilizerr.com/robots.txt')
.then(res => {
const $ = cheerio.load(res.data)
console.log($(this).text().trim() === 'User-agent:'
)
}).catch(err => console.error(err))
};
谢谢你的时间。
您可以简单地使用 regular expression 来检查“User-agent”是否是返回的 HTML 的一部分。
注意:如果抓取的页面没有 robots.txt 文件和 returns 404 状态代码(通常应该是这种情况),axios 会抛出错误。您应该在 catch
声明中考虑这一点。
下面是一个工作示例:
const axios = require("axios");
const cheerio = require("cheerio");
const getApiTest = async () => {
try {
const res = await axios.get("https://www.finger.digital/robots.txt");
const $ = cheerio.load(res.data);
const userAgentRegExp = new RegExp(/User-agent/g);
const userAgentRegExpResult = userAgentRegExp.exec($.text());
if (!userAgentRegExpResult) {
console.log("Doesn't have robots.txt");
return;
}
console.log("Has robots.txt");
} catch (error) {
console.error(error);
console.log("Doesn't have robots.txt");
}
};
getApiTest();
我正在尝试查找特定文本。就我而言,我不知道目标的 HTML 代码中的选择器、元素、父级或任何其他内容。只是想看看这个页面是否有 robots.txt。通过搜索 'User-agent:'.
来做到这一点有人知道如何在解析中搜索特定文本,而不知道页面上的任何其他信息吗?
getApiTest = async () => {
axios.get('http://webilizerr.com/robots.txt')
.then(res => {
const $ = cheerio.load(res.data)
console.log($(this).text().trim() === 'User-agent:'
)
}).catch(err => console.error(err))
};
谢谢你的时间。
您可以简单地使用 regular expression 来检查“User-agent”是否是返回的 HTML 的一部分。
注意:如果抓取的页面没有 robots.txt 文件和 returns 404 状态代码(通常应该是这种情况),axios 会抛出错误。您应该在 catch
声明中考虑这一点。
下面是一个工作示例:
const axios = require("axios");
const cheerio = require("cheerio");
const getApiTest = async () => {
try {
const res = await axios.get("https://www.finger.digital/robots.txt");
const $ = cheerio.load(res.data);
const userAgentRegExp = new RegExp(/User-agent/g);
const userAgentRegExpResult = userAgentRegExp.exec($.text());
if (!userAgentRegExpResult) {
console.log("Doesn't have robots.txt");
return;
}
console.log("Has robots.txt");
} catch (error) {
console.error(error);
console.log("Doesn't have robots.txt");
}
};
getApiTest();