2012-08-25 52 views
0

我想运行一个脚本来从网站提取信息,但是当我比较实际的网站,我的程序显示它是不一样的网站。Html scraping网站加载错误Jsoup Java

什么缺少的是一开始一些例子!DOCTYPE和公司的信息 http://www.manta.com/mb_43_E7_24/manufacturing/minnesota

我不知道如果JavaScript是问题的一部分,我尝试将其关闭,它仍然工作,但我也注意到里面有很多的javascript;网站不需要登录。也许饼干?(我不知道很多关于cookies)

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()); 

以上是使用

任何想法,为什么它是无法加载我的网页,我的浏览器的方式做的代码IM?有一次,我有它的工作,但我无意中破坏了它

如果这个解决方案不合理从拉网站获取信息,你有任何解决方案的建议吗?

我把一些更多的工作后发现它适用于http://www.manta.com/但如果我添加了suffex字符串/mb_43_E7_24/manufacturing/minnesota.php

不管怎样涉及suffex?

或者它可能是该网站暂时禁止我太多的请求?

+0

它是否遵循了301?你有没有考虑使用相同的URL并避免它? –

+0

您的浏览器是否发送了确切的用户代理? –

+0

看起来像301意味着重定向?网址是网站带给你的最终目的地,那么这是否意味着它不是一个令人头疼的问题?本网站几乎适用于任何版本,用户代理也很重要? – kevinn2065

回答

0

Jsoup不执行/呈现Javascript。 HTMLUnit有一个无头浏览器,它呈现完整页面并以String形式返回内容。硒也很有用。 Selenium拥有适用于Firefox,Chrome,IE和HTMLUnit的WebDrivers。我用下面的代码来执行Javascript并返回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); 
    } 
} 

上面的代码应该足够上手...