2016-06-23 4 views
3

웹 사이트를 긁어 내려고하고 있습니다. 요청 JS를 사용하여 Cheerio로 전달하는 HTML 문자열을 얻는 문제가 발생합니다. .Cheerio가 HTML 문자열에있는 특정 요소를 선택하지 않습니다.

혼란스러운 부분이 내가 긁어 노력하고있어 HTML 문자열에 존재 부분이지만, 내가 그들을 긁어하려고 힘내라을 사용하는 경우가있다하더라도, 그것은 ... 그것을 찾을 수 있습니다

예를 들어, 다른 테이블의 마지막 행 안에 ID가있는 테이블이 있습니다. 그 ID를 선택기로 사용하면 모든 하위 TR을 가져올 수 있지만 그 대신에 점점, 첫 번째 TR 다음에 하나의 TD가있는 또 다른 TR이 나오고 두 번째 TR이 갑자기 닫히고 테이블의 태그가 닫힙니다.

콘솔에서 HTML 문자열을 cheerio.load로 보내기 전에, 두 번째 TR에 더 많은 정보가 있으며, 그 테이블이 닫히기 전에 여러 개의 다른 TR이 있다는 것을 알 수 있습니다. 하지만 내가 치어 리를 통해 그것을 실행할 때, 이것은 그것이 나에게 말하는 것이 아니다.

나머지 부분을 살펴보면 (중요하지 않다고 생각하지는 않지만 ...) 나는 그 안에 href="javascript:void(0)"이 있다는 것을 알게되었습니다 - Cheerio를 껐을 수 있습니까?

도움 주셔서 감사합니다.

추가 조사시 'td:contains("this text")'과 같은 선택기를 사용하면이 내용이 표시됩니다. 그러나 내가 말할 수있는 한 다른 방법은 없습니다.

javascript : void (0)는 문제를 일으키지 않았고 정규식을 사용하여 인스턴스를 모두 제거했으며 여전히 신비가 있습니다.

답변

1

코드가 긁힌 것을 방지하기 위해 오류로 작성된 것으로 나타났습니다. 으로 폐쇄 된 <font> 태그가 있었는데, 어떻게 든 cheerio의 구문 분석 기능을 위반했습니다.

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

관련 문제