2012-08-25 2 views
0

사이트에서 정보를 가져 오기 위해 스크립트를 실행하려고하지만 실제 웹 사이트와 내 프로그램이 동일하지 않음을 보여주는 사이트를 비교할 때.HTML 스크랩 사이트로드 잘못된 Jsoup Java

http://www.manta.com/mb_43_E7_24/manufacturing/minnesota

내가 자바 스크립트 문제의 일부가 있는지 확실하지 않습니다 어떤 시작이 무엇인지없는 예! DOCTYPE과 회사의 정보를, 나는 그것을 해제 시도하고 그것은 여전히 ​​작동했지만 나는 또한 자바 스크립트가 많이 있음을 알아 차렸다. 웹 사이트에 로그인 할 필요가 없습니다. 어쩌면 쿠키?

String keyword = "http://www.manta.com/mb_43_E7_24/manufacturing/minnesota.php"; 
Document doc = Jsoup.connect(keyword).referrer("http://www.google.com").userAgent("Mozilla/5.0 (Windows; U;  WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6").get(); 
System.out.Println(doc.toString()); 

위는

내 페이지 내 브라우저가하는 방법을로드하는 데 실패 왜 어떤 아이디어를 사용하여 코드의 메신저이다 (I 쿠키에 대해 잘 모르는)? 한순간에 제대로 작동했지만 실수로 고장났습니다

이 솔루션으로 웹 사이트에서 정보를 가져올 수없는 경우 솔루션에 대한 권장 사항이 있습니까?

나는 좀 더 작품에 넣어 IT는 http://www.manta.com/ 작동 발견하지만 문자열 /mb_43_E7_24/manufacturing/minnesota.php

어쨌든 참여에 suffex있는 suffex를 추가하지 않을 경우?

또는 너무 많은 요청으로 일시적으로 사이트를 차단할 수 있습니까?

+0

이는 (301)을 따라합니까? 같은 URL을 사용하고 그것을 피하는 것을 고려 했습니까? –

+0

브라우저가 정확한 사용자 에이전트를 보내나요? –

+0

301은 리디렉션을 의미하는 것 같습니다. 이 사이트는 거의 모든 버전에서 작동하므로 사용자 에이전트가 크게 중요합니까? – kevinn2065

답변

0

Jsoup는 Javascript를 실행/렌더링하지 않습니다. HTMLUnit에는 전체 페이지를 렌더링하고 내용을 문자열로 반환하는 헤드리스 브라우저가 있습니다. 셀레늄도 유용합니다. Selenium에는 Firefox, Chrome, IE 및 HTMLUnit 용 WebDrivers가 있습니다. 아래의 코드를 사용하여 자바 스크립트를 실행하고 HTML을 반환합니다. 나는 이것을 코멘트 섹션을 위해 Javascript를 사용하는 사람이 긁기를 원하는 뉴스 사이트에 유용하다는 것을 알았다.

import org.jsoup.Jsoup; 
import org.jsoup.nodes.Document; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.htmlunit.HtmlUnitDriver; 

public class Test{ 

    private WebDriver driver; 
    private String output; 

    public Document getDocument(String input) { 
    driver = new HTMLUnitDriver(true); //the param true turns on javascript. 
    driver.get(input); 
    output = driver.getPageSource(); 
    driver.quit(); 
    return Jsoup.parse(output); 
    } 
} 

위의 코드는 시작하기에 충분합니다 ...