【问题标题】:Html scraping Site Loads Wrong Jsoup JavaHtml 抓取站点加载错误的 Jsoup Java
【发布时间】:2012-08-25 20:02:24
【问题描述】:

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

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

我不确定 javascript 是否是问题的一部分,我尝试将其关闭,但它仍然有效,但我也注意到其中有很多 javascript;该网站无需登录。也许是 cookie?(我对 cookie 了解不多)

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 则不行

是否涉及到后缀?

或者可能是网站因太多请求而暂时禁止我?

【问题讨论】:

  • 是否遵循301?您是否考虑过使用相同的 URL 并避免使用它?
  • 您的浏览器是否发送了确切的用户代理?
  • 301 好像是重定向的意思? url 也是该网站为您带来的最终目的地,这是否意味着它不是转发问题?该网站几乎适用于任何版本,那么用户代理是否重要?

标签: java javascript html jsoup


【解决方案1】:

Jsoup 不执行/渲染 Javascript。 HTMLUnit 有一个无头浏览器,它呈现整个页面并将内容作为字符串返回。硒也很有用。 Selenium 有用于 Firefox、Chrome、IE 和 HTMLUnit 的 WebDrivers。我使用下面的代码来执行 Javascript 并返回 html。我发现这对于我希望抓取在 cmets 部分使用 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);
  }
}

上面的代码应该足够上手了……

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-11-23
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    相关资源
    最近更新 更多