Nodejs环境下,有喜欢看163手机客户端每日轻松一刻的童鞋吗?

Nodejs环境下,有喜欢看163手机客户端每日轻松一刻的童鞋吗?

163新闻的Android客户端的每日轻松一刻已经是每天必看,于是乎想把每日轻松一刻都收集起来。

昨天从163新闻的Android客户端抓包分析了下,得出了json的url,昨天只测试了下,没及时把数据都爬下来, 今天再爬,163已经封了,只允许爬一小部分数据了,163动作真快!

成果:www.17qingsong.com,后面的数据没法得到了,虽然用google可以得到网页版的, 但是比较麻烦,懒得搞了。现在是每天定时去爬下。


5 回复

Node.js环境下,有喜欢看163手机客户端每日轻松一刻的童鞋吗?

大家好,今天我想分享一下如何在Node.js环境下抓取163新闻客户端的每日轻松一刻内容。

背景

163新闻的Android客户端的每日轻松一刻已经是每天必看的内容之一。由于我个人非常喜欢这个栏目,因此萌生了将每日轻松一刻的内容都收集起来的想法。

技术栈

  • Node.js:用于编写爬虫程序。
  • axios:用于发起HTTP请求。
  • cheerio:用于解析HTML文档。

实现步骤

  1. 获取JSON URL

    • 首先,我从163新闻的Android客户端抓包分析了下,得出了每日轻松一刻内容对应的JSON URL。
  2. 编写爬虫

    • 接下来,我会使用axios来发起HTTP请求,并用cheerio来解析返回的HTML内容,提取出我们需要的数据。

示例代码

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

async function fetchDailyJokes() {
    try {
        // 获取JSON URL
        const url = 'https://news.163.com/special/00804KVA/cm_dailymock.json';
        
        // 发起HTTP请求
        const response = await axios.get(url);
        
        // 解析返回的HTML内容
        const $ = cheerio.load(response.data);
        
        // 提取数据
        const jokes = [];
        $('.content').each((index, element) => {
            jokes.push($(element).text());
        });
        
        console.log(jokes);
    } catch (error) {
        console.error(`Error fetching data: ${error.message}`);
    }
}

fetchDailyJokes();

注意事项

  1. 合法性

    • 在进行数据爬取时,请确保遵守相关的法律法规及网站的使用条款,不要频繁请求或进行大规模爬取,以免给服务器造成负担。
  2. 反爬机制

    • 一些网站会有反爬机制,如限制IP、频率限制等。如果遇到被封的情况,可以考虑使用代理IP或者降低爬取频率。
  3. 数据存储

    • 可以将爬取到的数据存储到数据库中,以便后续的分析和展示。

成果展示

目前我已经搭建了一个简单的网站(www.17qingsong.com),用于展示每日轻松一刻的内容。但由于163已经对爬虫进行了限制,只能获取一小部分数据。如果你也喜欢这个栏目,欢迎访问我的网站查看。

希望这篇分享对你有所帮助,如果有任何问题或建议,欢迎留言交流!


以上就是我在Node.js环境下抓取163新闻客户端每日轻松一刻内容的方法,希望能对你有所启发。


T1350383429665 不能用?

把apk 后缀改成zip 解压 进入 /assets/default_columns.txt 这个文件里面包含了全部列表标示id

挂代理?

针对这个问题,我们可以使用Node.js来定期爬取163新闻客户端的每日轻松一刻内容,并将其保存到本地文件或数据库中。以下是一个简单的示例代码,展示如何实现这一功能。

示例代码

首先,我们需要安装一些必要的npm包:

npm install axios cheerio

然后,编写一个脚本来定期抓取内容:

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

async function fetchDailyLight() {
    try {
        const response = await axios.get('http://www.17qingsong.com'); // 假设这是一个获取每日轻松一刻内容的URL
        const html = response.data;
        const $ = cheerio.load(html);

        // 假设内容在一个特定的class为'content'的div标签内
        const content = $('.content').text();

        console.log(content);

        // 可以将内容保存到文件或数据库
        saveContent(content);
    } catch (error) {
        console.error('Failed to fetch the data:', error.message);
    }
}

function saveContent(content) {
    // 将内容保存到文件或数据库
    // 这里只是一个示例,实际应用中可能需要使用fs模块写入文件或连接数据库
    console.log('Content saved:', content);
}

// 每天定时执行
setInterval(fetchDailyLight, 24 * 60 * 60 * 1000); // 24小时
fetchDailyLight(); // 首次运行

解释

  • axios: 用于发送HTTP请求。
  • cheerio: 用于解析HTML文档。
  • fetchDailyLight: 定义了一个异步函数,该函数会尝试从指定的URL获取数据,并解析HTML内容。
  • saveContent: 定义了一个函数,用于保存获取到的内容。在这个例子中,只是简单地打印到控制台。
  • setInterval: 用于定时执行fetchDailyLight函数,每24小时执行一次。

注意事项

由于163已经对爬虫进行了限制,我们需要注意遵守网站的robots.txt文件以及相关法律法规,避免被封禁。此外,如果网站结构发生变化,需要相应地调整解析逻辑。

回到顶部