javascript爬虫

article/2025/10/11 5:08:29

用js爬虫,使用到nodejs

例子中爬取的是中国新闻网时政频道的最新10条新闻的title和链接

事先准备:

1、先去node官网下载安装一下
2、推荐vs code,需要通过终端下载插件,不想的话用cmd小黑框做终端,记事本写代码也行。

开始

1、新建文件夹,注意该文件夹名字不能包含中文
2、代码:

const request =  require('request');//
const iconv = require('iconv-lite');//设置编码格式
const Cheerio = require('cheerio');//封装成函数
const requestPromise = (url) =>{return new Promise((resolve, reject) =>{//先取消原有的编码格式request(url, {encoding:null},function (error, response, body) {if(response.statusCode == 200){//如果原网页编码格式有问题,可以转成ubt8格式的,该括号内utf-8为原网页编码格式(演示使用)const bufs = iconv.decode(body, 'utf-8');const html = bufs.toString('utf-8');//转成utf-8// console.log(html);resolve(html);}else{reject(error);}});})
}
const url = 'https://www.chinanews.com.cn/china/';  //.news_list_ulbox ul li div div div:nth-child(1) em a
requestPromise(url).then(res => {const $ = Cheerio.load(res);//成功后用cheerio加载$('.news_list_ulbox ul li div div div:nth-child(1) em a').each((i, item) => {console.log($(item).text());console.log('https://www.chinanews.com.cn/'+$(item).attr('href'))});
});

注:其中nth-child可参考nth-child和nth-of-type的区别,为当前选中的元素(div)下的同级子元素的第n个元素,其中非div类型也参与排序,nth-of-type则非div类型不参与排序

3、以下操作在vs code的终端,或者cmd切换到文件夹目录下执行都可
先初始化一下项目,运行后文件夹出现一个package.json文件

npm init -y

安装requesticonv-litecheerio等插件

npm install request --save
npm install iconv-lite --save
npm install cheerio --save

安装完成后package.json文件内容
在这里插入图片描述
4、node 文件名运行
这是运行成功图片,包含网址url被屏蔽了。。
在这里插入图片描述

总结

其实就是request获取页面的html元素 + cheerio分析html,来获取一些固定的标签的内容或者标签的url等值。

如何将爬虫获得的数据自动部署在自己的动态网页中?

懒得出来了,思路如下:
简单点可以通过node来连接数据库,将爬取的数据存入数据库中
但是不能实时获取。。
可以通过bat来设置每秒用node运行一次js文件,下面代码保存为bat格式

@echo off
:loopnode js文件名call :delay 1000
goto loop:delay
echo WScript.Sleep %1>delay.vbs
CScript //B delay.vbs
del delay.vbs

然后网页获取数据库的数据,就行了
(但还是推荐直接py或者java爬虫,然后直接写入动态网页里面)
用js这样子获取得有个前提:有个云服务器(不过好像部署网页都得有一个?)
实测这样运行的话其实也占不了多少云服务器的资源
在这里插入图片描述

另:若是Linux系统
bat文件为

for((i=0;i<10;))
do
sleep 2
node news_china.js
done

然后用nohup挂起,防止关闭终端后杀死进程
nohup bat文件路径 &
nohup命令使用


http://chatgpt.dhexx.cn/article/Zvc8gwVY.shtml

相关文章

用js写个爬虫

如何用js完成爬虫项目 前言一、node.js的安装二、mysql的安装三、确定爬取网页四、查看分析网页源码五、开始写爬虫npmNode调用mysql定义要访问的网站定义新闻页面里具体的元素的读取方式定义哪些url可以作为新闻页面构造一个模仿浏览器的request读取种子页面解析出种子页面里所…

Docker—容器数据卷

目录 1.什么是容器数据卷 2.数据卷的使用 3.实战MySQL同步数据 4.卷 常用命令 5.匿名挂载与具名挂载 5.1 匿名挂载 5.2 具名挂载 6.数据卷容器 1.什么是容器数据卷 Docker将运用与运行的环境打包形成容器运行&#xff0c; Docker容器产生的数据&#xff0c;如果不通过d…

docker删除已停止的容器

一、docker删除已停止的容器 1、根据容器的状态&#xff0c;删除Exited状态的容器 先停止容器、再删除镜像中的容器、最后删除none的镜像。执行命令如下&#xff1a; docker stop $(docker ps -a | grep "Exited" | awk {print $1 }) #停止容器 docker rm $(docke…

Docker与容器的区别

容器 虚拟机和容器结构主要区别在于中间两层&#xff0c;虚拟机自带了操作系统&#xff0c;这个操作系统可以和宿主机一样&#xff0c;也可以不一样&#xff0c;而容器是和宿主机共享一个操作系统。我们知道&#xff0c;操作系统的内容是很多的&#xff0c;就像我们自己电脑上的…

docker 删除 容器/镜像 方法

docker的删除有两种&#xff0c;一个是rm 删除容器&#xff0c;一个是rmi删除镜像 想要删除运行过的images(镜像) 必须首先删除它的container(容器) 首先查看并找到要删除的镜像 docker images 这里我们要删除hello-world镜像 使用rmi 加 镜像id docker rmi fce289e99eb9 报…

docker多容器操作与强制删除容器的方法步骤

简介&#xff1a; 这是一篇有关【doker的多容器操作和强制删除容器的方法】的文章&#xff0c;用最精简的语言去表达给前端读者们。 1、创建多个容器 在WIndows环境下我们来作这个&#xff0c;先打开三个PowerShell窗口&#xff0c;然后在每个窗口中输入创建容器的命令&#…

Docker删除镜像和容器

一、删除容器 首先需要停止所有的容器&#xff08;只停止单个时把后面的变量改为image id即可&#xff09; docker stop $(docker ps -a -q) 删除所有的容器&#xff08;只删除单个时把后面的变量改为image id即可&#xff09; docker rm $(docker ps -a -q) 二、删除镜像…

如何删除docker镜像与容器

目录 删除示例&#xff1a; 1.查看docker中要删除的镜像 2.删除镜像&#xff0c;使用命令“docker rmi image id” 3.查看docker中正在运行的容器 4.停止容器 5.删除容器 6.查看容器 7.删除镜像 8.最后查看所有镜像 删除示例&#xff1a; 1.查看docker中要删除的镜像 …

docker删除容器日志

废话不多数,看步骤 查看容器日志命令 docker logs -f 容器id 1.进入docker容器目录 cd /var/lib/docker/containers/ 2.查看容器的id&#xff0c;获取容器id&#xff0c;容器id就是容器目录名字 docker ps -a 3.进入容器&#xff0c;删除以.log结尾的文件就是日志文件了&a…

Docker 删除容器

用docker一段时间后&#xff0c;host上可能会有大量已经退出了的容器&#xff0c; 这些容器依然会占用host的文件系统资源&#xff0c;如果确认不会再重启此类容器&#xff0c;可以通过docker rm删除 docker rm一次可以指定多个容器&#xff0c;如果希望批量删除所有已经退出的…

如何优雅地删除Docker镜像和容器(超详细)

一、前言 大家是怎么删除Docker中的镜像和容器的呢&#xff0c;有没有考虑过如何优雅地删除呢&#xff1f;本教程详细指导如何在优雅地删除Docker容器和镜像。如需了解如何在Centos7系统里面安装Docker&#xff0c;可以参考教程【最新Docker在Centos7下安装部署&#xff08;参考…

AirPlay

最近一直在研究苹果的AirPlay协议。真是个好东西&#xff0c;基本上现在可以把任何屏幕内容&#xff0c;包括音频&#xff0c;视频和屏幕投射到支持AirPlay接收的设备上&#xff0c;目前是Apple TV或者AirExpress。 网上资料很少&#xff0c;比较有用的是这个哥们写的一篇AirPl…

aplay amixer用法详解

aplay aplay -t raw -c 1 -f S16_LE -r 8000 test2.pcm -t: type raw表示是PCM -c: channel 1 -f S16_LE: Signed 16bit-width Little-Endian -r: sample rate 8000 PCM是最raw的音频数据&#xff0c;没有任何头信息。WAV文件就是PCM头信息&#xff0c;头信息就是上述的声道…

aplay amixer arecord说明

arecord声音录制 arecord -l列出声卡和数字音频设备 -D参数用于指定音频设备PCM 以hwx,x开头 根据上面l列出的设备,如果选择tvp5158来录制声音的话那么pcm设备就位hw0,0,如果是tlv320aic3x则pcm设备为hw0,1,sii9135则pcm设备为hw0,2。 声卡号,设备号 -r指定采样频率:5512/8000…

【全志T113-S3_100ask】9-音频输入与输出(amixer、aplay、arecord)

【全志T113-S3_100ask】9-音频输入与输出 背景&#xff08;一&#xff09;amixer 的使用&#xff08;二&#xff09;amixer 设置音频输出参数&#xff08;三&#xff09;使用 aplay 播放音乐&#xff08;四&#xff09;使用 arecord 录音 背景 之前查看系统命令&#xff0c;发…

如何使用Aplayer播放器

Aplayer 一、部署 1、Aplayer 官网体验网址&#xff1a;https://aplayer.js.org/ Aplayer的GitHub网址&#xff1a; https://github.com/MoePlayer/APlayer 中文文档手册网址&#xff1a;首页 – APlayer 使用方法很简单&#xff0c;加载Aplayer的js和css&#xff0c;在想…

aplay,arec,amix使用

标准的alsa命令为&#xff0c;aplay&#xff0c;amixer&#xff0c;arecord 如下是高通在mdm9x07芯片上做了客制化的命令 aplay aplay -D hw:0,17 -P &arec arec -D hw:0,17 -P -R 8000 -C 1 &-D card 声卡 -d device 设备 -c channels 通道 -r rate 采样率 -b bits…

Splay

Spaly 众所周知&#xff0c;Splay 是一种平衡二叉查找树&#xff08;不要告诉我你不知道二叉查找树是什么qwq 不知道什么是二叉查找树的看过来&#xff1a; 关于二叉查找树&#xff09;。在这篇东西的最后我们也解释了为什么我们需要用到平衡二叉查找树而不是直接查找&#xff…

aplay 源码分析

ffmpeg -formats ffmpeg -sample_fmts ffmpeg -i ../english14.mp3 -ar 44100 -ac 2 -sample_fmt s16 -f wav english14.wav ffmpeg -i ../english14.mp3 -ar 44100 -ac 2 -sample_fmt s16 -f s16le english14.pcm其中针对PCM个数的数据aplay正确的播放格式为&#xff1a; apl…

Qt,Linux: 播放声音(aplay)

Linux下&#xff0c;Qt开发&#xff0c;使用的电脑情况比较复杂&#xff0c;开发机是Intel cpu, 常用的验证机是飞腾&#xff08;arm&#xff09;cpu, 客户的目标机也是飞腾&#xff08;arm&#xff09;cpu, 但验证机和目标机上情况还不太一样。 需要用到播放声音的功能&#x…