Html抓取站点加载错误的Jsoup Java

时间:2012-08-25 20:02:25

标签: java javascript html jsoup

我正在尝试运行一个脚本来从网站提取信息,但是当我将实际网站与我的程序显示的网站进行比较时,它是不一样的。

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

我不确定javascript是否是问题的一部分,我试过关闭它仍然有效,但我也注意到它中有很多javascript;网站无需登录。也许饼干?(我对饼干知之甚少)

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

以上是使用

的代码

为什么无法按照浏览器的方式加载页面?有一次,我让它工作,但我意外地打破了它

如果这个解决方案从网站上提取信息不合理,你对解决方案有什么建议吗?

我为http://www.manta.com/工作了一些工作并发现它,但是如果我添加了suffex字符串/mb_43_E7_24/manufacturing/minnesota.php

无论如何涉及到suffex?

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

1 个答案:

答案 0 :(得分: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);
  }
}

上面的代码应该足以开始......