0

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

缺少的一些示例是开头!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/但如果我添加后缀字符串 /mb_43_E7_24/manufacturing/minnesota.php 则不行

无论如何都涉及后缀吗?

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

4

1 回答 1

0

Jsoup 不执行/呈现 Javascript。HTMLUnit 有一个无头浏览器,它呈现整个页面并将内容作为字符串返回。硒也很有用。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);
  }
}

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

于 2013-09-05T14:09:41.073 回答