我试图从网站上抓取数据.该网站使用Facebook的React.因此,我可以使用Jaunt解析的源代码与我在使用Chrome检查器检查元素时看到的代码完全不同.
我对这一切知之甚少,但做了一些研究后我认为这与DOM而不是源代码有关.我需要一种能够获得这个DOM代码的方法,因为原始的源代码包含我想要的任何东西,但我没有最模糊的想法从哪里开始(甚至在这里阅读了很多答案).
这是我想要抓取的页面的一个示例.例如,为了抓住描述,我想抓住标签之间的内容:
<span class="light-font extended-card-description list-group-item">Example description....</span>
Run Code Online (Sandbox Code Playgroud)
但正如您所看到的,此元素仅在您" 检查元素 " 时出现,而不是在我查看页面源时出现.
我在这里问你天才的问题是,如何抓住这个DOM代码并开始抓取我真正想要的元素?
请原谅我,如果我的术语完全关闭,但正如我所说,这对我来说是一个全新的领域,我已经做了我能做的研究.
非常感谢你提前!
我曾经一直使用iMacros并使宏等待页面加载它就像下面这样简单:
SET!WAITPAGECOMPLETE YES
然而现在这不起作用,它似乎来自iMacros网站http://wiki.imacros .net /!WAITPAGECOMPLETE此功能甚至不再与Firefox兼容.
除了等待指定的时间之外,还有什么方法可以做到这一点?当然必须有,为什么后续版本会退回?
在此先感谢PS还原到IE不是一个选项
我是HtmlUnit的新手,我正在尝试抓取一个使用Javascript编辑代码的网站。我听说HtmlUnit是最好的方法,因为它使用无头浏览器返回最终代码。
但是,正如您将看到的那样,我什至无法创建一个HtmlPage对象,而不会抛出一个巨大且无法理解的异常(至少考虑到我对HtmlUnit几乎为空的经验)。
这是我的代码:
import com.gargoylesoftware.htmlunit.*;
import com.gargoylesoftware.htmlunit.html.HtmlPage;
public class Main {
public static void main(String[] args) {
Main scraper = new Main();
scraper.testingGargoyle();
}
private void testingGargoyle() {
String myUrl = "https://www.wearvr.com/#game_id=game_4";
WebClient webClient = new WebClient();
try {
HtmlPage myPage = ((HtmlPage) webClient.getPage(myUrl));
} catch (FailingHttpStatusCodeException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Run Code Online (Sandbox Code Playgroud)
这是抛出的异常:
Apr 30, 2015 5:43:50 PM com.gargoylesoftware.htmlunit.IncorrectnessListenerImpl notify
WARNING: Obsolete content type encountered: 'application/x-javascript'.
Apr 30, …Run Code Online (Sandbox Code Playgroud)