推荐6个最好的 JavaScript 和 Node.js 自动化网络爬虫工具!

前端原生js爬虫,浏览器爬取数据的小案例 前端爬虫最大的优点就是浏览器发起的接口访问,是很自然的请求,比起服务端发起更隐秘。采用js原生语法,没有任何node依赖,前端可视化爬虫,快来试试 阅读详情
AI摘要

文章深入探讨了6个JavaScript和Node.js网络爬虫库,包括Puppeteer、Cheerio等。介绍了各库的功能、应用示例、优缺点。如Puppeteer适合处理JavaScript渲染内容,Cheerio简单易用。选择时需考虑项目需求、网站复杂度等因素,以选出合适的爬虫库。

作为一名程序员,你是否曾遇到过需要从各大网站提取数据的需求?随着互联网的快速扩展,能够高效地进行网络爬虫已经成为企业、研究人员以及个人的一项重要技能。在这个数据为王的时代,如何利用JavaScript和Node.js来实现高效的数据抓取,是每一个开发者都应该掌握的技巧。

网络爬虫,即从网站提取数据的过程,已经成为各行各业的重要工具。而JavaScript和Node.js因其强大的功能和丰富的库,成为了网络爬虫的首选语言。通过这些库,我们可以简化爬虫过程,并提升其功能和效率。

在这篇文章中,我们将深入探讨6个最好的JavaScript和Node.js网络爬虫库,分析它们的功能、优点和缺点。无论你是初学者还是高级用户,这篇指南都将为你选择合适的网络爬虫解决方案提供宝贵的知识和见解。

一、 Puppeteer:强大的Node.js网络爬虫库

1. Puppeteer简介

Puppeteer是一个Node.js库,提供了控制无头Chrome或Chromium浏览器的高级API。它可以用于各种任务,包括网络爬虫、自动化浏览器交互和测试Web应用程序。下面是Puppeteer在网络爬虫中的一些应用示例:

示例一:单页面抓取

我们使用Puppeteer来抓取网页的标题和内容。

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto('https://www.example.com');

  const title = await page.title();
  const content = await page.evaluate(() => document.body.textContent);

  console.log('Title:', title);
  console.log('Content:', content);

  await browser.close();
})();

示例二:多页面抓取

Puppeteer也可以用于抓取多个页面的数据,例如电商网站的产品列表。

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  const urls = [
    'https://www.example.com/product1',
    'https://www.example.com/product2',
    'https://www.example.com/product3'
  ];

  const data = [];

  for (const url of urls) {
    await page.goto(url);
    const product = {
      name: await page.evaluate(() => document.querySelector('h1').textContent),
      price: await page.evaluate(() => document.querySelector('.price').textContent),
      description: await page.evaluate(() => document.querySelector('.description').textContent)
    };
    data.push(product);
  }

  console.log(data);

  await browser.close();
})();

示例三:处理JavaScript渲染的内容

Puppeteer还能处理由JavaScript渲染的内容,这对传统的网络爬虫工具来说常常是个挑战。

const puppeteer = require('puppeteer');

(async () => {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  await page.goto('https://www.example.com/dynamic-content');

  // 等待动态内容加载
  await page.waitForSelector('.dynamic-content');

  const dynamicContent = await page.evaluate(() => document.querySelector('.dynamic-content').textContent);

  console.log('Dynamic Content:', dynamicContent);

  await browser.close();
})();

优点

  • 无头浏览器自动化:Puppeteer提供了控制无头Chrome或Chromium浏览器的高级API,允许你自动化浏览器交互并从JavaScript渲染的内容中提取数据。

  • 强大的JavaScript处理能力:Puppeteer能够执行页面上的JavaScript,使其非常适合抓取依赖JavaScript渲染内容的现代动态网站。

  • 自定义和灵活性:Puppeteer提供了广泛的自定义选项,允许你根据特定需求定制爬虫过程,如设置用户代理、处理Cookie等。

  • 可靠一致的结果:Puppeteer使用实际的浏览器引擎,确保抓取过程与真实用户交互非常接近,从而提供更可靠和一致的结果。

  • 并行处理:Puppeteer支持并行处理,可以同时抓取多个页面,大大提高了网络爬虫任务的速度和效率。

缺点

  • 复杂性:Puppeteer相比其他一些网络爬虫库,学习曲线更陡峭,尤其对初学者来说更具挑战性。理解浏览器自动化的细微差别和管理复杂的异步操作可能需要一些时间。

  • 性能开销:在后台运行一个完整的浏览器会消耗大量资源,特别是对于大规模抓取项目或资源有限的机器来说。

  • 潜在的封锁风险:一些网站可能会检测并阻止基于Puppeteer的抓取尝试,因为它可以被识别为自动化活动而非人类驱动的交互。

  • 维护和更新:Puppeteer依赖于底层的Chromium浏览器,这意味着浏览器的更新有时可能会导致兼容性问题,需要定期维护和更新你的爬虫脚本。

二 、Cheerio:轻量级的Node.js网络爬虫库

2. Cheerio简介

Cheerio是一个类似于jQuery的库,用于在Node.js中解析和操作HTML文档。由于其简单易用,Cheerio在网络爬虫领域非常受欢迎。以下是使用Cheerio进行网络爬虫的一些示例:

示例一:单页面抓取

我们使用Cheerio来抓取网页的标题和内容。

const cheerio = require('cheerio');
const axios = require('axios');

(async () => {
  const response = await axios.get('https://www.example.com');
  const $ = cheerio.load(response.data);

  const title = $('title').text();
  const content = $('body').text();

  console.log('Title:', title);
  console.log('Content:', content);
})();

示例二:抓取列表项

Cheerio也可以用于从网页上的列表项中提取数据,例如产品列表或文章列表。

const cheerio = require('cheerio');
const axios = require('axios');

(async () => {
  const response = await axios.get('https://www.example.com/products');
  const $ = cheerio.load(response.data);

  const products = [];
  $('div.product').each((index, element) => {
    const product = {
      name: $(element).find('h2').text(),
      price: $(element).find('.price').text(),
      description: $(element).find('p.description').text()
    };
    products.push(product);
  });

  console.log(products);
})();

示例三:处理分页

Cheerio可以与其他库(如Axios)结合使用,处理分页并抓取多个页面的数据。

const cheerio = require('cheerio');
const axios = require('axios');

(async () => {
  let page = 1;
  const maxPages = 5;
  const allProducts = [];

  while (page <= maxPages) {
    const response = await axios.get(`https://www.example.com/products?page=${page}`);
    const $ = cheerio.load(response.data);

    $('div.product').each((index, element) => {
      const product = {
        name: $(element).find('h2').text(),
        price: $(element).find('.price').text(),
        description: $(element).find('p.description').text()
      };
      allProducts.push(product);
    });

    page++;
  }

  console.log(allProducts);
})();

优点

  • 简单易用:Cheerio的jQuery风格语法使其易于学习和使用,尤其适合熟悉jQuery的开发者。

  • 高效的解析和操作:Cheerio使用高效且健壮的htmlparser2库进行HTML解析,能够快速从网页中提取数据。

  • 灵活和可定制:Cheerio允许使用多种jQuery风格的选择器和方法来定位和提取特定数据。

  • 小巧轻便:Cheerio是一个轻量级库,适合资源或内存有限的项目。

  • 与其他库的兼容性:Cheerio可以轻松集成其他Node.js库(如Axios),创建更全面的网络爬虫解决方案。

缺点

  • 有限的JavaScript渲染内容处理能力:Cheerio主要关注HTML解析和操作,缺乏内置的JavaScript执行支持,这在抓取依赖JavaScript渲染内容的网站时是一个限制。

  • 潜在的封锁风险:与其他网络爬虫工具一样,基于Cheerio的爬虫可能被试图防止自动数据提取的网站检测并封锁。

  • 缺乏并行处理支持:Cheerio不支持内置的并行处理,这可能影响大规模网络爬虫项目的速度和效率。

  • 结果不一致的潜在风险:Cheerio依赖于HTML解析,在处理结构不良或动态网页时,可能会出现结果不一致的情况。

三、 Nightmare:高层次的Node.js浏览器自动化库

Nightmare简介

Nightmare是一个Node.js的高级浏览器自动化库,可以用于网络爬虫。它提供了简单直观的API来与网页进行交互和提取数据。以下是使用Nightmare进行网络爬虫的一些示例:

示例一:单页面抓取

我们使用Nightmare来抓取网页的标题和内容。

const Nightmare = require('nightmare');

(async () => {
  const nightmare = Nightmare();
  await nightmare
    .goto('https://www.example.com')
    .evaluate(() => ({
      title: document.title,
      content: document.body.innerText
    }))
    .then(result => {
      console.log('Title:', result.title);
      console.log('Content:', result.content);
    });
  await nightmare.end();
})();

示例二:抓取列表项

Nightmare也可以用于从网页上的列表项中提取数据,例如产品列表或文章列表。

const Nightmare = require('nightmare');

(async () => {
  const nightmare = Nightmare();
  await nightmare
    .goto('https://www.example.com/products')
    .evaluate(() => {
      const products = [];
      const productElements = document.querySelectorAll('div.product');
      productElements.forEach(element => {
        products.push({
          name: element.querySelector('h2').innerText,
          price: element.querySelector('.price').innerText,
          description: element.querySelector('p.description').innerText
        });
      });
      return products;
    })
    .then(products => {
      console.log(products);
    });
  await nightmare.end();
})();

示例三:处理分页

Nightmare可以用来浏览分页内容并抓取多个页面的数据。

const Nightmare = require('nightmare');

(async () => {
  const nightmare = Nightmare();
  let page = 1;
  const maxPages = 5;
  const allProducts = [];

  while (page <= maxPages) {
    const products = await nightmare
      .goto(`https://www.example.com/products?page=${page}`)
      .evaluate(() => {
        const products = [];
        const productElements = document.querySelectorAll('div.product');
        productElements.forEach(element => {
          products.push({
            name: element.querySelector('h2').innerText,
            price: element.querySelector('.price').innerText,
            description: element.querySelector('p.description').innerText
          });
        });
        return products;
      });
    allProducts.push(...products);
    page++;
  }

  console.log(allProducts);
  await nightmare.end();
})();

优点

  • 简化的浏览器自动化:Nightmare提供了高级API,抽象了浏览器自动化的复杂性,使得编写和维护网络爬虫脚本更加容易。

  • 跨浏览器兼容性:Nightmare支持多个浏览器,包括Chromium、Firefox和Safari,可以在不同的网络环境中测试和抓取内容。

  • 强大的脚本能力:Nightmare的API允许你在网页上执行多种操作,如点击、输入、滚动等,使其成为一个多功能的网络爬虫工具。

  • 可靠和一致的结果:Nightmare使用实际的浏览器引擎,确保抓取过程与真实用户交互非常接近,从而提供更可靠和一致的结果。

  • 异步编程支持:Nightmare的API设计与现代异步编程模式(如Promises和async/await)兼容,使得管理复杂的抓取工作流更加容易。

缺点

  • 性能开销:与Puppeteer类似,Nightmare依赖于完整的浏览器运行,这对于大规模抓取项目或资源有限的机器来说可能会消耗大量资源。

  • 潜在的封锁风险:网站可能会检测并阻止基于Nightmare的抓取尝试,因为它可以被识别为自动化活动而非人类驱动的交互。

  • 社区和生态系统有限:与其他一些网络爬虫库相比,Nightmare的社区和生态系统较小,这可能使得找到支持、资源和第三方集成更加困难。

  • 维护和更新:Nightmare依赖于底层的浏览器引擎,这意味着浏览器的更新有时可能会导致兼容性问题,需要定期维护和更新你的爬虫脚本。

四、 Axios:强大的HTTP请求库在网络爬虫中的应用

Axios简介

Axios是一个流行的JavaScript库,用于发起HTTP请求。虽然Axios本身并不提供网络爬虫功能,但它可以与其他库结合,创建一个完整的网络爬虫解决方案。以下是使用Axios进行网络爬虫的一些示例:

示例一:单页面抓取

我们使用Axios获取网页的HTML内容,然后使用Cheerio解析并提取所需数据。

const axios = require('axios');
const cheerio = require('cheerio');

(async () => {
  const response = await axios.get('https://www.example.com');
  const $ = cheerio.load(response.data);

  const title = $('title').text();
  const content = $('body').text();

  console.log('Title:', title);
  console.log('Content:', content);
})();

示例二:抓取列表项

Axios可以与Cheerio结合使用,从网页上的列表项中提取数据。

const axios = require('axios');
const cheerio = require('cheerio');

(async () => {
  const response = await axios.get('https://www.example.com/products');
  const $ = cheerio.load(response.data);

  const products = [];
  $('div.product').each((index, element) => {
    const product = {
      name: $(element).find('h2').text(),
      price: $(element).find('.price').text(),
      description: $(element).find('p.description').text()
    };
    products.push(product);
  });

  console.log(products);
})();

示例三:处理分页

Axios可以与其他库(如Cheerio)结合使用,处理分页并抓取多个页面的数据。

const axios = require('axios');
const cheerio = require('cheerio');

(async () => {
  let page = 1;
  const maxPages = 5;
  const allProducts = [];

  while (page <= maxPages) {
    const response = await axios.get(`https://www.example.com/products?page=${page}`);
    const $ = cheerio.load(response.data);

    $('div.product').each((index, element) => {
      const product = {
        name: $(element).find('h2').text(),
        price: $(element).find('.price').text(),
        description: $(element).find('p.description').text()
      };
      allProducts.push(product);
    });

    page++;
  }

  console.log(allProducts);
})();

优点

  • 简单易用:Axios提供了一个干净且直观的API,用于发起HTTP请求,易于集成到网络爬虫工作流中。

  • 一致性和可靠性:Axios提供了一种一致且可靠的方式来处理HTTP请求,具有自动转换JSON数据和错误处理的功能。

  • 广泛采用:Axios是一个广泛使用且成熟的库,拥有大量活跃的社区,提供了丰富的文档、资源和支持。

  • 灵活性和可定制性:Axios允许高度定制,可以配置请求头、超时和其他请求参数,以满足你的网络爬虫需求。

  • 兼容Promises和Async/Await:Axios的API设计与现代异步编程模式无缝兼容,使得管理复杂的爬虫工作流更加容易。

缺点

  • 缺乏内置的网络爬虫功能:Axios主要是一个HTTP客户端库,不提供任何内置的网络爬虫功能,需要与其他库(如Cheerio或Puppeteer)结合使用,才能创建完整的网络爬虫解决方案。

  • 依赖其他库:使用Axios进行网络爬虫时,需要依赖其他库来处理HTML解析、JavaScript执行和分页管理等任务,这可能会增加爬虫设置的复杂性。

  • 有限的JavaScript渲染内容处理能力:虽然Axios可以用于获取页面的初始HTML内容,但它无法执行JavaScript和处理动态渲染的内容,这可能需要使用其他库(如Puppeteer或Nightmare)。

  • 潜在的封锁风险:与其他网络爬虫工具一样,基于Axios的爬虫可能被试图防止自动数据提取的网站检测并封锁。

五、 Playwright:多浏览器支持的强大Node.js网络爬虫库

Playwright简介

Playwright是由微软开发的Node.js库,提供了一个高层次的API,用于自动化Chromium、Firefox和WebKit。它与Puppeteer相似,但提供了一些额外的功能和改进。以下是使用Playwright进行网络爬虫的一些示例:

示例一:单页面抓取

我们使用Playwright来抓取网页的标题和内容。

const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch();
  const page = await browser.newPage();
  await page.goto('https://www.example.com');

  const title = await page.title();
  const content = await page.evaluate(() => document.body.textContent);

  console.log('Title:', title);
  console.log('Content:', content);

  await browser.close();
})();

示例二:抓取列表项

Playwright也可以用于从网页上的列表项中提取数据,例如产品列表或文章列表。

const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch();
  const page = await browser.newPage();
  await page.goto('https://www.example.com/products');

  const products = await page.evaluate(() => {
    const productElements = document.querySelectorAll('div.product');
    return Array.from(productElements).map(element => ({
      name: element.querySelector('h2').textContent,
      price: element.querySelector('.price').textContent,
      description: element.querySelector('p.description').textContent
    }));
  });

  console.log(products);

  await browser.close();
})();

示例三:处理分页

Playwright可以用于浏览分页内容并抓取多个页面的数据。

const { chromium } = require('playwright');

(async () => {
  const browser = await chromium.launch();
  const page = await browser.newPage();

  let currentPage = 1;
  const maxPages = 5;
  const allProducts = [];

  while (currentPage <= maxPages) {
    await page.goto(`https://www.example.com/products?page=${currentPage}`);
    const products = await page.evaluate(() => {
      const productElements = document.querySelectorAll('div.product');
      return Array.from(productElements).map(element => ({
        name: element.querySelector('h2').textContent,
        price: element.querySelector('.price').textContent,
        description: element.querySelector('p.description').textContent
      }));
    });
    allProducts.push(...products);
    currentPage++;
  }

  console.log(allProducts);

  await browser.close();
})();

优点

  • 跨浏览器兼容性:Playwright支持多种浏览器,包括Chromium、Firefox和WebKit,可以在不同的网络环境中测试和抓取内容。

  • 强大的JavaScript处理能力:Playwright能够执行页面上的JavaScript,非常适合抓取依赖JavaScript渲染内容的现代动态网站。

  • 可靠和一致的结果:Playwright使用实际的浏览器引擎,确保抓取过程与真实用户交互非常接近,从而提供更可靠和一致的结果。

  • 并行处理:Playwright支持并行处理,可以同时抓取多个页面,大大提高了网络爬虫任务的速度和效率。

  • 改进的稳定性和维护:Playwright在设计上更稳定,更易于维护,相比Puppeteer减少了浏览器更新对爬虫脚本的影响。

缺点

  • 复杂性:与Puppeteer类似,Playwright的学习曲线较陡峭,尤其对初学者来说更具挑战性。理解浏览器自动化的细微差别和管理复杂的异步操作可能需要一些时间。

  • 性能开销:在后台运行一个完整的浏览器会消耗大量资源,特别是对于大规模抓取项目或资源有限的机器来说。

  • 潜在的封锁风险:一些网站可能会检测并阻止基于Playwright的抓取尝试,因为它可以被识别为自动化活动而非人类驱动的交互。

  • 较新的库:相比一些其他的网络爬虫解决方案,Playwright是一个相对较新的库,这意味着它的社区和第三方集成资源可能较少。

六、Selenium WebDriver:功能全面的开源浏览器自动化库

6. Selenium WebDriver简介

Selenium WebDriver是一个广受欢迎的开源库,用于浏览器自动化。虽然Selenium主要用于网页自动化和测试,但也可以用于网络爬虫。以下是使用Selenium WebDriver进行网络爬虫的一些示例:

示例一:单页面抓取

我们使用Selenium WebDriver来抓取网页的标题和内容。

const { Builder, By, Key, until } = require('selenium-webdriver');

(async () => {
  const driver = await new Builder().forBrowser('chrome').build();
  await driver.get('https://www.example.com');

  const title = await driver.getTitle();
  const content = await driver.findElement(By.tagName('body')).getText();

  console.log('Title:', title);
  console.log('Content:', content);

  await driver.quit();
})();

示例二:抓取列表项

Selenium WebDriver可以用于从网页上的列表项中提取数据,例如产品列表或文章列表。

const { Builder, By, Key, until } = require('selenium-webdriver');

(async () => {
  const driver = await new Builder().forBrowser('chrome').build();
  await driver.get('https://www.example.com/products');

  const products = await driver.findElements(By.css('div.product')).then(elements => {
    return Promise.all(elements.map(async element => ({
      name: await element.findElement(By.css('h2')).getText(),
      price: await element.findElement(By.css('.price')).getText(),
      description: await element.findElement(By.css('p.description')).getText()
    })));
  });

  console.log(products);

  await driver.quit();
})();

示例三:处理分页

Selenium WebDriver可以用于浏览分页内容并抓取多个页面的数据。

const { Builder, By, Key, until } = require('selenium-webdriver');

(async () => {
  const driver = await new Builder().forBrowser('chrome').build();
  await driver.get('https://www.example.com/products');

  let currentPage = 1;
  const maxPages = 5;
  const allProducts = [];

  while (currentPage <= maxPages) {
    const products = await driver.findElements(By.css('div.product')).then(elements => {
      return Promise.all(elements.map(async element => ({
        name: await element.findElement(By.css('h2')).getText(),
        price: await element.findElement(By.css('.price')).getText(),
        description: await element.findElement(By.css('p.description')).getText()
      })));
    });
    allProducts.push(...products);

    const nextPageButton = await driver.findElement(By.css(`a.page-${currentPage + 1}`));
    await nextPageButton.click();
    await driver.wait(until.elementLocated(By.css('div.product')), 10000);

    currentPage++;
  }

  console.log(allProducts);

  await driver.quit();
})();

优点

  • 跨浏览器兼容性:Selenium WebDriver支持多个浏览器,包括Chrome、Firefox、Safari和Edge,可以在不同的网络环境中测试和抓取内容。

  • 强大的JavaScript处理能力:Selenium WebDriver可以执行页面上的JavaScript,非常适合抓取依赖JavaScript渲染内容的现代动态网站。

  • 丰富的文档和社区支持:Selenium WebDriver拥有庞大而活跃的社区,提供了丰富的文档和资源,对于初学者和有经验的用户都很有帮助。

  • 支持多种编程语言:Selenium WebDriver支持多种编程语言,包括Java、Python、C#、Ruby和Node.js,可以根据项目需求选择合适的语言。

  • 多功能性:虽然主要用于网页自动化和测试,Selenium WebDriver也可以用于各种任务,包括网络爬虫,使其成为一个多功能的工具。

缺点

  • 复杂性:Selenium WebDriver的学习曲线较陡峭,尤其对初学者来说更具挑战性。其API可能更为冗长,需要更多的样板代码来实现所需功能。

  • 性能开销:与Puppeteer和Playwright类似,Selenium WebDriver依赖于完整的浏览器运行,对于大规模抓取项目或资源有限的机器来说可能会消耗大量资源。

  • 潜在的封锁风险:一些网站可能会检测并阻止基于Selenium WebDriver的抓取尝试,因为它可以被识别为自动化活动而非人类驱动的交互。

  • 维护和更新:Selenium WebDriver依赖于底层的浏览器引擎,这意味着浏览器的更新有时可能会导致兼容性问题,需要定期维护和更新你的爬虫脚本。

结束

在这篇全面的文章中,我们探讨了用于网络抓取的最佳6个JavaScript和Node.js库:Puppeteer、Cheerio、Nightmare、Axios、Playwright和Selenium WebDriver。每个库都提供独特的功能、优势和劣势,适用于不同的用例和技能水平。

Puppeteer和Playwright是功能强大的库,提供了高级API来控制无头浏览器,非常适合抓取JavaScript渲染内容和处理复杂交互。Cheerio和Axios提供了更简单、更轻量级的解决方案,分别专注于解析HTML和发出HTTP请求。Nightmare和Selenium WebDriver提供了跨浏览器兼容性和额外的灵活性,尽管它们可能有较陡的学习曲线。

在选择网络抓取库时,必须考虑诸如项目需求、目标网站的复杂性、跨浏览器兼容性的需求以及团队内可用资源和技能水平等因素。通过了解每个库的优势和劣势,您可以做出明智的决定,选择最适合您网络抓取需求的库。

无论您选择哪个库,开发有效和有道德的网络抓取解决方案都需要注意细节、对目标网站有深入了解,并致力于负责任的数据收集实践。通过正确的工具和方法,您可以利用网络抓取的力量收集有价值的数据,推动您的业务或研究向前发展。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

在这里插入图片描述

软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

JavaScript反爬虫技巧详细攻略 在当今的web开发中,JavaScript已经成为了一个不可或缺的部分。然而,这也引发了一个问题,那就是如何防止爬虫程序(如Google Bot或其他搜索引擎的爬虫)从网站中抓取数据。以下是一些关于如何防止JavaScript被爬虫抓取的技巧和策略,以及它们的一些工作原理。 阅读详情

相关推荐

Py爬虫之 js逆向实战:某案例

在渗透学习的过程中,我们在测试未收权访问中,包括我们进行fuzz,都是需要获取js文件中的接口,然后进行进一步利用的,当然说这么多的根本原因是,越来越发现网络安全是一个全栈的学习路线,需要学习各种各样的知识,来提高自己的挖掘和利用能力,于是有了今天的这篇文章.

记录开发和安全学习过程中的点点滴滴 3283

javascript爬虫

用js爬虫,使用到nodejs 例子中爬取的是中国新闻网时政频道的最新10条新闻的title和链接 事先准备: 1、先去node官网下载安装一下 2、推荐vs code,需要通过终端下载插件,不想的话用cmd小黑框做终端,记事本写代码也行。 开始 1、新建文件夹,注意该文件夹名字不能包含中文 2、代码: const request = require('request');// const iconv = require('iconv-lite');//设置编码格式 const Cheerio = req

qq_43622870的博客 8838

【GitHub项目推荐--21个最佳开源网络爬虫库,适合Python、Java、Go、JavaScript开发语言】【转载】

Heritrix是一个基于JAVA的开源爬虫工具,具有高度的可扩展性,并高度尊重robot.txt排除指令和Meta机器人标签,并以自适应速度收集数据,执行稳定性好。这是一个简单、快速的Web爬虫,旨在轻松、快速地发现Web应用程序中的端点和资产。webmagic是一个开源的Java爬虫框架,目标是简化爬虫的开发流程,让开发者专注于逻辑功能的开发。crawler4j是一个开源的Java网络爬虫,它提供了一个简单的接口, 抓取网页使用它,可以在几分钟内设置一个多线程的网络爬虫。

j8267643的博客 8788

Node.js实现简单爬虫 讲解

一、什么是爬虫 网络爬虫(又称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定规则,自动的抓取万维网信息的程序或者脚本。另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。 搜索引擎 今日头条/网易新闻 .抢票软件 最终都指向的是 12306 比价网 ·淘宝 京东 拼多多 在生活中网络爬虫经常出现,搜索引擎就离不开网络爬虫。例如,百度搜索引擎的爬虫名字叫作百度蜘蛛(Baiduspider)。百度蜘蛛,是百度搜索引擎的一个自动程序。它每天都会在海量的互联.

woyebuzhidao321的博客 1万+

五分钟学会Python网络爬虫

但不管怎样,爬虫技术是无罪的,还是值得我们开发人员去学习了解一下的。在学习之前,我们还是要先了解一下相关概念。 什么是爬虫 网络爬虫:又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。 大数据时代,要进行数据分析,首先要有数据源,可数据源从哪里来,花钱买,没预算,只能从其它网站就行抓取。 细分下来,业内分为两类:爬虫和反爬虫。 反爬虫:顾名思义,就是防止你来我网站或APP上做爬虫的。 爬虫工程师和反爬虫工程师是一对相爱相杀的小伙伴,经常因为对方要加班写代码,

python588的博客 2353

【进阶】【JS逆向爬虫】【1.JavaScript 基础语法】初始JavaScript

初始JavaScript 1.JavaScript 概述 2.JavaScript 的作用 3.浏览器执行 JS 简介 4.JS 的组成 ECMAScript DOM ——文档对象模型 BOM ——浏览器对象模型 5.JavaScript 运行过程

weixin_43612602的博客 1511

探讨6个最好的 JavaScript 和 Node.js 网络爬虫库

作为一名程序员,你是否曾遇到过需要从各大网站提取数据的需求?随着互联网的快速扩展,能够高效地进行网络爬虫已经成为企业、研究人员以及个人的一项重要技能。在这个数据为王的时代,如何利用JavaScript和Node.js来实现高效的数据抓取,是每一个开发者都应该掌握的技巧。网络爬虫,即从网站提取数据的过程,已经成为各行各业的重要工具。而JavaScript和Node.js因其强大的功能和丰富的库,成为...

<sdffdsfsdfdfs>sfsfsfsdfsdffds</sdfsDS>Fsd 524

有什么值得推荐的node. js练手项目吗?

​可以参考一下下面的nodejs相关的项目,希望对你的学习有所帮助,废话少说,让我们直接进入正题

SiKi学院的博客 1724

【逆向爬虫】Python中执行调用JS的多种方法汇总_python 执行js

1.PyExecJS方法PyExecJS 是一个简单易用的库,它提供了一个通用的接口来执行 JavaScript代码,可以在多个JavaScript 运行时环境下工作,包括 Node.js、PhantomJS。return e;i++)

2301_82000445的博客 2721

网络爬虫 - JavaScript解密Ⅰ(十七)

JS解密一

qq_28396923的博客 1192

Node.js基础入门

Node.js是JavaScript的运行环境,解析js代码,使前端和后端分离,让JS独立运行在服务端的开发平台

2401_87079968的博客 1225

码云推荐 | 那些优秀的网络爬虫工具介绍

随着网络的迅速发展,万维网成为大量信息的载体,在这个大数据时代,如何有效地提取并利用网络上的数据成为一个巨大的挑战。爬虫,即网络爬虫,是一种按照一定的规则自动地抓取万维网信息的程序或者脚本,另外一些不常使用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫,今天给大家推荐七款优秀的网络爬虫工具。

ZicoChan的博客 6万+

基于Node.js的高效网络爬虫实战案例

简介:网络爬虫是IT领域中用于自动抓取互联网信息的重要技术。本“node.js爬虫例子”项目利用Node.js这一高性能JavaScript运行环境,结合superagent、cheerio和async等核心库,实现高效的网页数据抓取。通过superagent发送HTTP请求,cheerio解析HTML内容提取目标数据,以及async库管理异步流程,避免回调地狱并提升代码可维护性,项目展示了构建轻量级爬虫的完整流程。

weixin_32687875的博客 1397

人人都能爬虫!推荐一款支持多语言的分布式网络爬虫管理平台

Crawlab是一款功能强大的网络爬虫管理平台(WCMP),支持多种编程语言(包括 Python、Go、Node.js、Java、C#)和爬虫框架(如 Scrapy、Colly、Selenium、Puppeteer)开发的爬虫任务。此外,Crawlab还提供了完善的爬虫任务调度、执行和监控功能,十分适用于那些对可溯性、可扩展性和稳定性有严格要求的生产环境,帮助使用者更全面管理爬虫任务的全生命周期。1000+优质开源项目更新进度:162/1000。如需更多类型优质项目推荐,请在文章后留言。

1922

ray.tune调参学习笔记0:调参基本流程

本篇总结python中使用tune调参的整体流程

Mr_111000的专栏 2622

计算机图形学入门30:动画与模拟介绍

计算机图形学入门,动画与模拟,物理模拟,质点弹簧系统,运动学,粒子系统,动作捕捉。

YanisWu的博客 1485

Node.js 与 Puppeteer:自动化测试与爬虫开发

本文旨在为开发者提供使用Node.js和Puppeteer进行自动化测试和网页爬虫开发的全面指南。我们将覆盖从基础安装到高级技巧的所有内容。核心概念与联系:介绍Node.js和Puppeteer的基本原理核心算法与操作步骤:详细讲解Puppeteer的核心API项目实战:通过实际案例展示自动化测试和爬虫开发应用场景与工具推荐未来趋势与挑战Node.js: 一个基于Chrome V8引擎的JavaScript运行时环境Puppeteer。

AI架构全栈开发实战笔记 1552

影刀RPA进阶:Excel多条件筛选与数据提取实战

本文详细介绍了如何利用影刀RPA实现Excel多条件筛选与数据提取的自动化。通过拆解文本、数值、日期及颜色筛选等核心指令,并结合实战案例,指导用户构建稳健的销售数据提取机器人,从而高效处理复杂数据报表,提升工作效率。

onion的博客 529

Webster - 强大的 Node.js 网络爬虫框架

Webster 是一个可靠的高级网络爬虫和抓取框架,使用 Node.js 编写。该项目致力于帮助开发者轻松地爬取网站并从页面中提取结构化数据。 ## 主要编程语言 该项目主要使用 JavaScript 语言开发。 ## 核心功能 Webster 的核心功能包括: - 爬取网站:能够爬取静态网页以及通过浏览器客户端 JavaScript 渲染的内容。 - 数据提取:支持从页面中提取文本、属

gitblog_00581的博客 465

vins-fusion环境配置、安装与测试

本文主要介绍如何搭建vins-fusion的运行环境,以及解决vins-fusion编译运行时遇到的环境冲突问题,并在此基础上实现例程的运行。

qq_52068373的博客 1万+

OGRE 3D----2. QGRE + QQuickView

将 OGRE(面向对象图形渲染引擎)集成到使用 QQuickView 的 Qt Quick 应用程序中,可以在现代灵活的 UI 框架中提供强大的 3D 渲染功能。本文将指导您如何在 QQuickView 环境中设置 OGRE。

charce_you的专栏 913

资源推荐 | 五十种最好用的开源爬虫软件

资源推荐 | 五十种最好用的开源爬虫软件

一名正义的白帽黑客 2839

【企业智能体开发】优化模型成本、延迟与失败降级

小林的培训快开始时,服务台花很久“思考最优回答”,体验并不会更好。反过来,为了省钱而始终选最轻的模型,若连房间、连接方式和任务状态都识别不稳,后续错误检索和重复建单会造成更大代价。企业 Agent 的优化对象不是单次模型调用价格,而是任务在可接受时间内、安全地推进到正确结果的总成本。

Mr数据杨 893

五分钟带你学会Python网络爬虫

什么是爬虫 网络爬虫:又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。 大数据时代,要进行数据分析,首先要有数据源,可数据源从哪里来,花钱买,没预算,只能从其它网站就行抓取。 细分下来,业内分为两类:爬虫和反爬虫。 反爬虫:顾名思义,就是防止你来我网站或APP上做爬虫的。 爬虫工程师和反爬虫工程师是一对相爱相杀的小伙伴,经常因为对方要加班写代码,甚至丢掉工作。比如下面这张图,大家用心感受一下: 爬虫的基本原理 如上图所示,爬虫的第一个步骤就是..

IT教育任姐姐的博客 7577

pytorch实现基本的logistic和softmax回归实验(手动+torch)

前提:不是前馈神经网络,没有隐藏层。 一:Logistic回归实验–人工构造数据集,手动构造模型 要求: 动手从0实现logistic回归,实现二分类,人工构造数据集,并分析loss、训练集、测试集的准确率。(要求从零实现二元交叉熵) 实验过程: 1.1人工构造数据集 1. # #自定义数据---训练集 2. num_inputs = 2 3. n_data = torch.ones(1500, num_inputs) # 数据的基本形态 4. x1 = torch.normal(2 * n_d

qq_37534947的博客 1万+

银行监管报送系统介绍(十五):金融审计平台

金审平台主要包括基础、财务、结算、信贷和中间业务五大板块,主要服务于审计署对中国银行的各项审计任务,同时也可为行内审计、稽核检查、数据分析、总分行提供基础数据服务,为实现基础数据共享提供了有力的数据保障。2019年1月某全国性股份制商业银行收到审计署2019-23号文,文中指出为进一步提高审计数据质量,审计署审计组派员前往9家重点商业银行,就完善标准化数据的相关情况与各银行有关部门进行讨论协商。关于数据报送频率及报送内容:数据从2019年4月开始,按月报送,即于每月25日之前报送上月数据;

银行信息系统应用架构详解 2053
上一篇: 10个最佳探索性测试工具(2024)
下一篇: 从零开始:自动化测试新手必读的面试指南
字节自动化测试
博客等级 码龄6年 7034粉丝 1810原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值