我正在试图抓一个网站,我遇到了问题,使用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)没有导致问题,我使用正则表达式删除它的所有实例,仍然有神秘感。
答案 0 :(得分:2)
事实证明,代码是用错误编写的,也许是为了阻止抓取。有一个标签<font>
以</div>
关闭,这不知何故打破了cheerio的解析能力。
html = html.replace(/[<]font size[=]["]1["][>]\d[<]\/div[>]/g, ""));