gpt4 book ai didi

javascript - Cheerio 无法正确解析 HTML

转载 作者:行者123 更新时间:2023-12-02 23:27:43 24 4
gpt4 key购买 nike

我从 html 的表格中解析出了一个行数组,并将其存储在列表中。列表中的每一行都是一个看起来像这样的字符串:

["<td headers="DOCUMENT" class="t14data"><a target="6690-Exhibit-C-20190611-1" href="http://www.fara.gov/docs/6690-Exhibit-C-20190611-1.pdf" class="doj-analytics-processed"><span style="color:blue">Click Here </span></a></td><td headers="REGISTRATIONNUMBER" class="t14data">6690</td><td headers="REGISTRANTNAME" class="t14data">SKDKnickerbocker LLC</td><td headers="DOCUMENTTYPE" class="t14data">Exhibit C</td><td headers="STAMPED/RECEIVEDDATE" class="t14data">06/11/2019</td>","<td headers="DOCUMENT" class="t14data"><a target="5334-Supplemental-Statement-20190611-30" href="http://www.fara.gov/docs/5334-Supplemental-Statement-20190611-30.pdf" class="doj-analytics-processed"><span style="color:blue">Click Here </span></a></td><td headers="REGISTRATIONNUMBER" class="t14data">5334</td><td headers="REGISTRANTNAME" class="t14data">Commonwealth of Dominica Maritime Registry, Inc.</td><td headers="DOCUMENTTYPE" class="t14data">Supplemental Statement</td><td headers="STAMPED/RECEIVEDDATE" class="t14data">06/11/2019</td>"]

使用 puppeteer 通过以下 page.evaluate 函数从页面中提取代码。

然后我想用 Cheerio 解析这段代码,我发现它更简单且更容易理解。但是,当我将每个 html 字符串传递给cheerio 时,它无法正确解析它们。这是我当前使用的函数:

    let data = res.map((tr) => {
let $ = cheerio.load(tr);
const link = $("a").attr("href");
const number = $("td[headers='REGISTRATIONNUMBER']").text();
const name = $("td[headers='REGISTRANTNAME']").text();
const type = $("td[headers='DOCUMENTTYPE']").text();
const date = $("td[headers='STAMPED/RECEIVEDDATE']").text();
return { link, number, name, type, date };
});

由于某种原因,每行只有“a”标记可以正常工作。这意味着“link”变量已正确定义,但其他变量均未正确定义。当我使用 $("*") 返回应该是所有 td 的列表时,它返回一个不寻常的节点列表:

enter image description here

我做错了什么,如何访问具有各种标题及其文本内容的 td?谢谢!

最佳答案

它通常看起来更像这样:

let data = res.map((i, tr) => {
const link = $(tr).find("a").attr("href");
const number = $(tr).find("td[headers='REGISTRATIONNUMBER']").text();
const name = $(tr).find("td[headers='REGISTRANTNAME']").text();
const type = $(tr).find("td[headers='DOCUMENTTYPE']").text();
const date = $(tr).find("td[headers='STAMPED/RECEIVEDDATE']").text();
return { link, number, name, type, date };
}).get();

请记住,cheerio map 的参数与 js map 相反。

关于javascript - Cheerio 无法正确解析 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56659784/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com