Cheerio没有选择HTML字符串

时间:2016-06-23 05:26:13

标签: jquery cheerio

我正在试图抓一个网站,我遇到了问题,使用Request JS,我得到一个HTML字符串,我正在传递给Cheerio。

令人困惑的部分是HTML字符串中确实存在的部分,我正在试图抓取它,但是当我使用Cheerio试图刮掉它们时,它找不到它虽然它在那里......

例如,在另一个表的最后一行中有一个带有ID的表,我希望通过使用该ID作为选择器,我能够获得所有子TR,但是我得到的是第一个TR,然后另一个有一个TD内部,然后突然关闭第二个TR,然后关闭表的标签。

从console.logging HTML字符串发送到cheerio.load之前,我可以看到第二个TR中有更多的信息,然后在关闭该表之前有多个其他TR。但是当我通过cheerio运行时,这并不是它告诉我的。

现在看看剩下的部分(虽然不知道这是不是很重要......)我注意到它里面有href="javascript:void(0)" - 这样的事情会不会让Cheerio掉下来?< / p>

感谢您的帮助。

经过进一步调查,如果我使用'td:contains("this text")'之类的选择器,则会显示。但就我所知,其他方式并非如此。

此外,javascript:void(0)没有导致问题,我使用正则表达式删除它的所有实例,仍然有神秘感。

1 个答案:

答案 0 :(得分:2)

事实证明,代码是用错误编写的,也许是为了阻止抓取。有一个标签<font></div>关闭,这不知何故打破了cheerio的解析能力。

html = html.replace(/[<]font size[=]["]1["][>]\d[<]\/div[>]/g, ""));