js提取指定网站内容(溢出:Jsoup无法解析整个网页中提取一些特定数据)

优采云 发布时间: 2022-04-06 07:25

  js提取指定网站内容(溢出:Jsoup无法解析整个网页中提取一些特定数据)

  Question_Statement_Stack 溢出:

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

  它只能提取文档的某些部分。我必须解析数以千计的网页,但我无法确定缺少哪些页面,即无法使用 Jsoup 完全解析。我必须手动查找未完全解析的页面,对于这样的 网站 我使用 Selenium 来模拟浏览器解析文档的工作。有什么方法可以找出 Jsoup 无法解析的页面类型?有一种方法可以表明整个文档还没有使用 Jsoup 进行解析。

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

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

  例如:搜索过滤器

  搜索过滤器

  搜索过滤器

  搜索过滤器

   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 links;

public BasicWebCrawler() {

links = new HashSet();

}

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 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线