Nodejs 如何把这个link里的公司scrape出来

Nodejs 如何把这个link里的公司scrape出来

http://www.glassdoor.com/Reviews/new-york-city-reviews-SRCH_IL.0,13_IM615.htm

实验了https://github.com/ruipgil/scraperjs, 不好使。

2 回复

Node.js 如何从这个链接中抓取公司信息

如果你想要使用 Node.js 抓取特定网页中的公司信息(例如从 Glassdoor 页面),你可以使用一些流行的库来帮助你完成这个任务。以下是一个简单的例子,展示了如何使用 axioscheerio 来抓取公司名称。

安装依赖

首先,你需要安装 axioscheerio

npm install axios cheerio

示例代码

接下来,你可以编写一个简单的脚本来抓取公司信息:

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

// 目标URL
const url = 'http://www.glassdoor.com/Reviews/new-york-city-reviews-SRCH_IL.0,13_IM615.htm';

async function scrapeCompanies() {
    try {
        // 发送HTTP请求获取页面内容
        const response = await axios.get(url);
        
        // 使用cheerio加载HTML文档
        const $ = cheerio.load(response.data);

        // 假设公司名称包含在一个类名为"company-name"的元素中
        const companies = [];

        $('.company-name').each((index, element) => {
            companies.push($(element).text().trim());
        });

        console.log(companies);
    } catch (error) {
        console.error(`Error fetching data: ${error}`);
    }
}

scrapeCompanies();

解释

  1. 安装依赖

    • axios 是一个基于 promise 的 HTTP 库,可以用来发送网络请求。
    • cheerio 是一个轻量级的库,用于解析 HTML 文档,并提供类似 jQuery 的 API。
  2. 定义目标URL

    • 在上面的例子中,我们定义了要抓取的 URL。
  3. 异步函数 scrapeCompanies

    • 使用 axios.get 发送 GET 请求以获取页面内容。
    • 使用 cheerio.load 加载返回的 HTML 内容。
    • 遍历具有特定类名 .company-name 的所有元素,并提取其文本内容。
  4. 输出结果

    • 将抓取到的公司名称存储在一个数组中并打印出来。

注意事项

  • 该示例假设公司名称位于具有特定类名的元素中。实际网站可能使用不同的标签或类名,因此需要根据实际情况调整选择器。
  • 如果网站有反爬虫机制,可能需要处理更复杂的逻辑,如设置 User-Agent、添加延迟等。

通过这种方式,你可以轻松地抓取网页上的数据并进行进一步处理。


要从指定的链接中抓取公司信息,可以使用Node.js中的axios库来获取网页内容,并使用cheerio库来解析HTML。这里是一个简单的示例代码,展示如何实现这一功能。

示例代码

首先,你需要安装必要的依赖包:

npm install axios cheerio

然后,你可以创建一个JavaScript文件(例如scrapeCompanies.js),并在其中添加以下代码:

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

async function scrapeCompanies(url) {
    try {
        const response = await axios.get(url);
        const $ = cheerio.load(response.data);

        // 假设公司名称在某个特定的HTML标签和类中,如<div class="company-name">
        const companies = [];
        $('div.company-name').each((index, element) => {
            companies.push($(element).text());
        });

        return companies;
    } catch (error) {
        console.error(`Error scraping the URL: ${url}`, error);
    }
}

// 使用示例
const url = 'http://www.glassdoor.com/Reviews/new-york-city-reviews-SRCH_IL.0,13_IM615.htm';
scrapeCompanies(url)
    .then(companies => {
        console.log('Scraped Companies:', companies);
    });

解释

  • axios: 用于发送HTTP请求并获取网页内容。
  • cheerio: 用于解析HTML并提取所需的信息。
  • 在上面的代码中,我们假设公司名称存储在具有class="company-name"<div>标签中。根据实际网站的HTML结构,你可能需要调整选择器以匹配正确的元素。

请确保检查目标网站的robots.txt文件以及其使用条款,确保你的爬虫行为是合法的。此外,如果目标网站使用了反爬虫技术(如JavaScript渲染、CAPTCHA等),你可能需要更复杂的工具如Puppeteer来处理这些情况。

回到顶部