我正在为我的一个班级创建一个twitter机器人来练习使用队列并构建我的简历。
我希望机器人从paper.li时事通讯中抓取推文句柄,然后发送用户推文。
这是一个示例网页。 http://paper.li/profkane/1335985326
我的理由,最初是获取网页的链接,然后获取页面源,浏览@twitterhandle,然后将它们添加到队列中,以便在构建消息时使用。
我查找了页面源代码,但我无法在网页上的任何位置找到Twitter名称。这仍然可以用Java做吗?
答案 0 :(得分:1)
您需要使用具有javascript支持的库。我使用 HtmlUnit 作为复制浏览器行为的绝佳库!
请参阅下面的修改后的答案from this question,了解如何使用javascript访问网页的简单示例。
首先,查看他们的网页(http://htmlunit.sourceforge.net/)以启动并运行htmlunit。确保使用最新的快照(写这篇文章时为2.12)
尝试这些设置几乎可以忽略任何障碍:
WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17);
webClient.getOptions().setRedirectEnabled(true);
webClient.getOptions().setCssEnabled(false);
webClient.getOptions().setThrowExceptionOnScriptError(false);
webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
webClient.getOptions().setUseInsecureSSL(true);
webClient.getOptions().setJavaScriptEnabled(true);
webClient.getCookieManager().setCookiesEnabled(true);
然后在获取页面时,请确保在对页面执行任何操作之前等待后台Javascript,例如等待后台javascript。
//Get Page
HtmlPage page1 = webClient.getPage("https://login-url/");
//Wait for background Javascript
webClient.waitForBackgroundJavaScript(10000);
//Get full page _after_ javascript has rendered it fully
System.out.println(page1.asXml());
我希望这个基本的例子可以帮到你!
您可以使用HtmlUnit执行浏览器可以执行的任何操作,但可以通过编程方式执行。
答案 1 :(得分:0)
就刮擦而言,你可以刮掉整个页面并查找twitter id(或句柄)。当我检查样本页面时,我找不到这样的句柄,但在Twitter图标中有指向用户帐户的链接。您可以使用它来获取句柄。如果您正在寻找Java中的库,您可以给JSOUP一个机会。