无法使用JSoup提取网页中的整个HTML内容

时间:2018-07-19 12:28:33

标签: javascript java html iframe jsoup

问题_陈述_堆栈溢出:

Jsoup无法解析整个网页,因此我尝试提取的特定数据也丢失了。在我的项目中,我想从网页中提取一些特定数据。由于某些搜索过滤器/ iframe /由于内容位于JS中,因此我无法从网页中提取我真正需要的信息。

它只能提取文档的某些部分。我必须解析成千上万的网页,而我无法识别丢失了哪些页面,即无法使用Jsoup进行完全解析。我必须手动查找哪个页面没有被完全解析,对于此类网站,我使用Selenium模拟浏览器的工作以解析文档。是否有任何方法可以找出无法使用Jsoup解析哪种类型的页面?有一种方法可以指示尚未使用Jsoup解析整个文档。

我发现: 1.无法加载带有Javascript的页面。 2.无法解析带有搜索过滤器的页面。 3.不分析带有包装的页面。 4.不会解析使用iframe的页面。

但是我无法定义将它们重定向到Selenium的特殊条件。即使我指出无法使用Jsoup加载Javascript页面,我也无法将所有页面重定向到Selenium,因为这确实很耗时,并且大大降低了性能。

例如: https://www.teachers-teachers.com/search-jobs-搜索过滤器

https://jobs.rockwellcollins.com/job-search-results/-搜索过滤器

http://www.kaplan.com.sg/careers/-Javascript

http://jobs.ecolab.com/job-search-results/-搜索过滤器

http://www.autoanything.com/jobs/opportunities-搜索过滤器

http://www.dksh.com/global-en/home/careers/career-opportunities-iframe

https://www.expereo.com/careers/-iframe

   import org.jsoup.Jsoup;
   import org.jsoup.nodes.Document;
   import org.jsoup.nodes.Element;
   import org.jsoup.select.Elements;

   import java.io.IOException;
   import java.util.HashSet;

   public class BasicWebCrawler {

private HashSet<String> links;

public BasicWebCrawler() {
    links = new HashSet<String>();
}

public void getPageLinks(String URL) {
    //4. Check if you have already crawled the URLs 
    //(we are intentionally not checking for duplicate content in this example)
    if (!links.contains(URL)) {
        try {
            //4. (i) If not add it to the index
            if (links.add(URL)) {
                System.out.println(URL);
            }

            //2. Fetch the HTML code
            Document document = Jsoup.connect(URL).followRedirects(true)
                     .header("Accept-Encoding", "gzip, deflate")
                        .userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0")
                        .maxBodySize(0)
                        .timeout(600000)
                        .get();
            //3. Parse the HTML to extract links to other URLs
           System.out.println(document);
        } catch (IOException e) {
            System.err.println("For '" + URL + "': " + e.getMessage());
        }
    }
}

public static void main(String[] args) {

    new BasicWebCrawler().getPageLinks("https://jobs.rockwellcollins.com/job-search-results/");
}

}

0 个答案:

没有答案