出于某种原因,我需要解析网站的 HTML。
但是网站的内容被 JavaScript 阻止了。
当我 NSLog 字符串时,HTML 的内容不是我想要的。
错误的 HTML
</script><noscript><div class="error-container"><div class="wrapper"><header><a href="/"><img src="/resource/img/logo.png"><div class="title">Adobe Color CC</div></a></header><section><ul id="no-js" class="wrap"><li><h1>JavaScript Disabled</h1><p>Adobe Color CC requires JavaScript in order to load properly. **Please enable JavaScript in your browser and reload the page.**</p></li><li><h1>JavaScript est désactivé</h1><p>Pour pouvoir se charger correctement, Adobe Color CC requiert JavaScript. Veuillez activer JavaScript dans votre navigateur et recharger la page.</p></li><li><h1>JavaScript deaktiviert</h1><p>JavaScript ist erforderlich, damit Adobe Color CC ordnungsgemäß geladen wird. Aktivieren Sie JavaScript im Browser und laden Sie die Seite neu.</p></li><li><h1>JavaScript が無効です</h1><p>Adobe Color CC で正しく読み込みを行うには、JavaScript が必要です。ご使用のブラウザーで JavaScript を有効にして、ページを再読み込みしてください。`
获取内容方法
NSURL *htmlUrl = [NSURL URLWithString:@"https://color.adobe.com/explore/newest/?time=all"];
NSStringEncoding htmlEncoding = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingUTF8);
NSString *htmlString = [NSString stringWithContentsOfURL:htmlUrl encoding:htmlEncoding error:nil];
NSLog(@"%@",htmlString);
我应该做什么?
最佳答案
stringWithContentsOfURL
确实不是为此设计的。它旨在接收数据,例如静态的 JSON 或 XML。
我建议使用其他网络类,这将提供更多的控制以及使其异步的能力。 Making stringWithContentsOfURL asynchronous - Is it safe?的答案应该提供更多细节。
关于javascript - 如何使用 Objective-C 解析需要 JavaScript 的 HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27191282/