我正在为我的一个班级创建一个twitter机器人,以练习使用队列并构建我的简历。
我希望机器人刮推特处理从paper.li时事通讯,然后发送用户推文。
这是一个示例网页。http://paper.li/profkane/1335985326
我的理由是,最初是获取网页的链接,然后获取页面源代码,浏览@twitterhandle,然后将这些添加到队列中,以便稍后在构造消息时使用。
我查了一下网页来源,但我在网页上找不到twitter的名字。在Java中还可以这样做吗?
发布于 2013-03-02 17:04:47
你需要使用一个支持javascript的库。我使用HtmlUnit来做这件事,这是一个复制浏览器行为的很棒的库!
关于如何使用javascript访问页面的简单示例,请参阅下面我修改后的答案from this question。
First,请查看他们的网页(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来做几乎任何浏览器可以做的事情,但以编程的方式。
发布于 2013-03-02 17:07:36
就抓取而言,您可以抓取整个页面并查找twitter id(或句柄)。当我检查示例页面时,我找不到这样的句柄,但在Twitter图标中有指向用户帐户的链接。您可以使用它来获取句柄。如果您正在寻找Java中的擦除库,那么可以尝试一下JSOUP。
https://stackoverflow.com/questions/15172530
复制相似问题