首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java从网页上抓取数据?

用Java从网页上抓取数据?
EN

Stack Overflow用户
提问于 2013-03-02 16:41:51
回答 2查看 1.8K关注 0票数 1

我正在为我的一个班级创建一个twitter机器人,以练习使用队列并构建我的简历。

我希望机器人刮推特处理从paper.li时事通讯,然后发送用户推文。

这是一个示例网页。http://paper.li/profkane/1335985326

我的理由是,最初是获取网页的链接,然后获取页面源代码,浏览@twitterhandle,然后将这些添加到队列中,以便稍后在构造消息时使用。

我查了一下网页来源,但我在网页上找不到twitter的名字。在Java中还可以这样做吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-02 17:04:47

你需要使用一个支持javascript的库。我使用HtmlUnit来做这件事,这是一个复制浏览器行为的很棒的库!

关于如何使用javascript访问页面的简单示例,请参阅下面我修改后的答案from this question

First,请查看他们的网页(http://htmlunit.sourceforge.net/)以启动并运行htmlunit。确保使用最新的快照(写入本文时为2.12)

尝试这些设置可以忽略几乎所有的障碍:

代码语言:javascript
复制
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。

代码语言: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
EN

Stack Overflow用户

发布于 2013-03-02 17:07:36

就抓取而言,您可以抓取整个页面并查找twitter id(或句柄)。当我检查示例页面时,我找不到这样的句柄,但在Twitter图标中有指向用户帐户的链接。您可以使用它来获取句柄。如果您正在寻找Java中的擦除库,那么可以尝试一下JSOUP。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15172530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档