使用Java从动态网站提取链接

时间:2013-01-18 21:29:28

标签: java html-parsing web-crawler jsoup

我正在尝试从网站中提取所有链接。我在之前的程序中使用Jsoup来做到这一点,这里的问题是通过按下更多按钮生成“更多内容”并且它不会更改页面,它只是加载更多内容所以我不知道如何看到所有使用Java和Jsoup的可用链接。

该网站为http://seekingalpha.com/symbol/msft,我只想提取特定公司(如Microsoft)文章的所有链接。

2 个答案:

答案 0 :(得分:1)

你需要得到一些你可以监视你正在通过网络发出的请求的东西。您可以使用Chrome中的“网络”标签观看http流量,但我个人喜欢Charles。无论如何,如果你看看点击更多按钮会发生什么,你会看到正在发出POST请求(当然使用AJAX),看起来像这样:

http://seekingalpha.com/account/ajax_headlines_content 200 POST seekingalpha.com / account / ajax_headlines_content 432 ms 5.94 KB完成

在标题中,参数是:

输入所有 第2页 slu ms msft is_symbol_page true

所以,如果我是你,我只是通过使用页面参数进行POST请求来模拟,直到你得到你想要的所有内容为止。顺便说一句,返回的内容是一个很容易解析的html片段,例如:

> <div class="symbol_articles_list mini_category">
>     <div>
>       <ul>
>           <li>
>               <div class="fl">
>                 <a class="small_picture" href="/author/the-part-time-investor">
>                   <img height="20" width="20" src="http://static1.cdn-seekingalpha.com/images/users_profile/000/541/113/small_pic.png?1352646193"/>
>                 </a>
>               </div>
>             <div class="content">
>               <div class="symbol_article">
>                 <a href="/article/1109901-microsoft-and-4-other-undervalued-stocks"
> sasource="portfolio_rel">Microsoft And 4 Other Undervalued Stocks</a>
>                 <div class="date_on_by">
>                     <a sasource="portfolio_rel" href="/author/the-part-time-investor">The Part-time Investor</a>
>                   <span class="bullet">&bull;</span>
>                   Mon, Jan 14<span class='bullet'>&bull;</span> <span class='comments'><a
> href='/article/1109901-microsoft-and-4-other-undervalued-stocks#comments_header'
> sasource='headlines_tabs'>44&nbsp;Comments</a></span>               
> </div>
>               </div>
>             </div>
>             <div class="cleaner"></div>
>           </li>

答案 1 :(得分:0)

我会使用HtmlUnit。提取显示的链接,然后单击“更多”(HtmlUnit将执行加载更多链接的javascript))并提取新显示的链接