2013-01-18 4 views
1

웹 사이트에서 모든 링크를 추출하려고합니다. 이전 프로그램에서 Jsoup를 사용하여 더 많은 버튼을 누르면 "더 많은 콘텐츠"가 생성되고 페이지는 변경되지 않으며 간단히 더 많은 콘텐츠가로드되므로 모든 것을 볼 방법이 확실하지 않습니다. Java 및 Jsoup를 사용하여 사용 가능한 링크.자바를 사용하여 동적 웹 사이트에서 링크 추출

웹 사이트는 http://seekingalpha.com/symbol/msft이며 단순히 Microsoft와 같은 특정 회사의 기사 링크를 모두 추출하려고합니다.

답변

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 params 객체를 파라미터는 다음과 같습니다

유형 모든 2 페이지 슬러그 내가 당신이라면 is_symbol_page가

그래서 난 그냥 모방 것 사실 msft를 그 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> 
+0

빠른 답변을드립니다. "페이지 매개 변수를 계산하여 POST 요청을 만들어서 에뮬레이트하는 것"을 의미 할 수 있습니까? 필자는 전에 이것을 한 번도 해 본 적이 없으므로 특정 매개 변수로 POST 요청을 에뮬레이트하는 방법을 잘 모릅니다. – Art

+0

나는 Jsoup을 사용 해본 적이 없다는 점에서 유감 스럽지만, 자바 문서를 살펴보면 다음과 같이 생각할 것입니다 : Jsoup.connect ("http://seekingalpha.com/account/ajax_headlines_content") .data ("type data "("slugs ","msft ") 데이터 ("is_symbol_page ","true ") post(); – rainkinz

+0

감사합니다. 작동하도록했습니다 :) – Art

0

나는 HtmlUnit을 사용할 것입니다. 표시된 링크를 추출하고 'more'(HtmlUnit은 더 많은 링크를로드하는 javascript를 실행합니다)를 클릭하고 표시된 링크를 모두 추출하십시오.

+0

감사합니다! 이 일을 할 수 있는지 알아 보겠습니다 :) – Art

관련 문제