nodeJS爬虫-爬取虎嗅新闻

2023-12-06 16:20
文章标签 爬虫 nodejs 新闻 取虎

本文主要是介绍nodeJS爬虫-爬取虎嗅新闻,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1.安装依赖库到本地,需要的库有:安装方法见Node.js笔记说明
const superagent = require('superagent');
const cheerio = require('cheerio');
const async = require('async');
const fs = require('fs');
const url = require('url');
const request = require('request');

2.爬取首页:

const huxiuUrl = 'https://www.huxiu.com/';function Huxiu_hot3(url){
this.url = url;
this.getindex = function(){
superagent.get(this.url).end(function(err, res) {if (err) {return console.error(err);}//cheerio nodejs版的JQlet $ = cheerio.load(res.text);//获取首页所有的链接//console.log(res.text);});}}var test = new Huxiu_hot3(huxiuUrl);
test.getindex();

(1)这里要介绍一下superagent:
superagent是nodeJS里一个非常方便的客户端请求代码模块;
请求方式有:
get(默认)
post
put
delete
head
(2)语法:
request(RequestType, RequestUrl).end(callback(err, res));

(3)写法:
var request = require('superagent') 
request        //request表示superagent对象.post('/api/pet') .send({ name: 'Manny', species: 'cat' }) .set('X-API-Key', 'foobar') .set('Accept', 'application/json') .then(res => { alert('yay got ' + JSON.stringify(res.body)); });

3.页面数据解析: 我们通过cheerio的load方法解析整个文档,就是html页面所有内容,可以通过console.log($.html());在控制台查看
(1)利用JQuery语法操作DOM: cheerio是一个node的库,可以理解为一个Node.js版本的jquery,用来从网页中以 css selector取数据,使用方式和jquery基本相同。
$('div.big-pic-box div>a:first-child').each(function(idx,element){let $element = $(element);//console.log($element.attr('href'));
});

(2)Jquery遍历函数: each() 方法规定为每个匹配元素规定运行的函数。
语法:$(selector).each(function(index,element))* index - 选择器的 index 位置
* element - 当前的元素(也可使用 "this" 选择器)

(3) url.resolve方法使用说明:  为URL或 href 插入 或 替换原有的标签; 用于拼接所需的URL
//由于该方法属于url模块,使用前需要引入url模块(var url= require(“url”) )
var url = require('url');
var a = url.resolve('/one/two/three', 'four') ,
b = url.resolve('http://example.com/', '/one'),
c = url.resolve('http://example.com/one', '/two');
console.log(a +","+ b +","+ c);
//输出结果:
///one/two/four
//http://example.com/one
//http://example.com/two

(4)获取到页面解析到的目标URL:
$('div.big-pic-box div>a:first-child').each(function(idx,element){let $element = $(element);//console.log($element.attr('href'));let href = url.resolve(huxiuUrl, $element.attr('href'));// allUrl.push(href);console.log(href);
});

4. &#x(unicode编码后的汉字)JS转换方法:
let content = $('.article-wrap div.article-content-wrap').html(); //返回的是unicode编码的数据,需要 unicode 转中文
content = unescape(content.replace(/&#x/g,'%u').replace(/;/g,''))
console.log(content);

5.Json和字符串的相互转换:
(1) json.stringfy()将js对象(Object)、数组转换成字符串;
(2)json.parse()将字符串{}转成json对象,例如;只有转化为JSON格式才能使用  ret.id 这种方式获取id的值
"{"token":"EAAehsk05sX4BAAoUt2w6Ecf1MxLY17V6DT3S9Wb9n4Ml7dGQ07lczhZAAUEXLXNXP87avp0LNfCc5eTilBguJOTAD1E8rtakT5pKJNxCiZAFsWPqw3yu2WiaWxHBRtbeBpreZCWpP2gqUnvv2O06MX3Wn7rHdlkcw0dfPCS0WjAfkX16Qe08nJOLHNfdIhcXnfkybeO5LIltFYdCQUh46JY96ZAogmkJiO0H4xB25QZDZD","id":"111374853316990","name":"Chunyu Tian","picture":"https://graph.facebook.com/v3.2/111374853316990/picture?height=64&width=64&migration_overrides=%7Boctober_2012%3Atrue%7D"}"

6.JS读取文件夹下所有文件名:
let  fs = require('fs');
let  join = require('path').join;
/**
*
* @param startPath  起始目录文件夹路径
* @returns {Array}
*/
function findSync(startPath) {let result=[];function finder(path) {let files=fs.readdirSync(path);files.forEach((val,index) => {let fPath=join(path,val);let stats=fs.statSync(fPath);if(stats.isDirectory()) finder(fPath);if(stats.isFile()) result.push(fPath);});}finder(startPath);return result;
}
let fileNames=findSync('./');

这篇关于nodeJS爬虫-爬取虎嗅新闻的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/462472

相关文章

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

Python3 BeautifulSoup爬虫 POJ自动提交

POJ 提交代码采用Base64加密方式 import http.cookiejarimport loggingimport urllib.parseimport urllib.requestimport base64from bs4 import BeautifulSoupfrom submitcode import SubmitCodeclass SubmitPoj():de

Python:豆瓣电影商业数据分析-爬取全数据【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】

**爬取豆瓣电影信息,分析近年电影行业的发展情况** 本文是完整的数据分析展现,代码有完整版,包含豆瓣电影爬取的具体方式【附带爬虫豆瓣,数据处理过程,数据分析,可视化,以及完整PPT报告】   最近MBA在学习《商业数据分析》,大实训作业给了数据要进行数据分析,所以先拿豆瓣电影练练手,网络上爬取豆瓣电影TOP250较多,但对于豆瓣电影全数据的爬取教程很少,所以我自己做一版。 目

Golang 网络爬虫框架gocolly/colly(五)

gcocolly+goquery可以非常好地抓取HTML页面中的数据,但碰到页面是由Javascript动态生成时,用goquery就显得捉襟见肘了。解决方法有很多种: 一,最笨拙但有效的方法是字符串处理,go语言string底层对应字节数组,复制任何长度的字符串的开销都很低廉,搜索性能比较高; 二,利用正则表达式,要提取的数据往往有明显的特征,所以正则表达式写起来比较简单,不必非常严谨; 三,使

Golang网络爬虫框架gocolly/colly(四)

爬虫靠演技,表演得越像浏览器,抓取数据越容易,这是我多年爬虫经验的感悟。回顾下个人的爬虫经历,共分三个阶段:第一阶段,09年左右开始接触爬虫,那时由于项目需要,要访问各大国际社交网站,Facebook,myspace,filcker,youtube等等,国际上叫得上名字的社交网站都爬过,大部分网站提供restful api,有些功能没有api,就只能用http抓包工具分析协议,自己爬;国内的优酷、

Golang网络爬虫框架gocolly/colly(三)

熟悉了《Golang 网络爬虫框架gocolly/colly 一》和《Golang 网络爬虫框架gocolly/colly 二》之后就可以在网络上爬取大部分数据了。本文接下来将爬取中证指数有限公司提供的行业市盈率。(http://www.csindex.com.cn/zh-CN/downloads/industry-price-earnings-ratio) 定义数据结构体: type Zhj

014.Python爬虫系列_解析练习

我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈 入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈 虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈 PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)文章合集 👈👈 Oracle数据库教程:👉👉 Oracle数据库文章合集 👈👈 优

urllib与requests爬虫简介

urllib与requests爬虫简介 – 潘登同学的爬虫笔记 文章目录 urllib与requests爬虫简介 -- 潘登同学的爬虫笔记第一个爬虫程序 urllib的基本使用Request对象的使用urllib发送get请求实战-喜马拉雅网站 urllib发送post请求 动态页面获取数据请求 SSL证书验证伪装自己的爬虫-请求头 urllib的底层原理伪装自己的爬虫-设置代理爬虫coo

nvm及nodejs安装相关

安装 1.清空文件夹,卸载nvm及nodejs 2.下载安装包 https://github.com/coreybutler/nvm-windows/releases (也下载有) 3.安装nvm 地址写D:/nvm和D:/nodejs 4.安装nodejs nvm ls available //查询版本nvm install 16.20.2 //安装对应版本号nvm use 1