最新文章
简介:cheerio 是一个HTML解析器,cheerio实现了核心jQuery的子集。常用来解析采集来的HTML数据。安装:npm install cheerio
基础使用:const cheerio = require('cheerio');
var htmlString = ` ul id="fruits"
li class="apple" 苹果 /li
li class="orange" 橙子 /li
li class="pear" 梨 /li
/ul `;
$ = cheerio.load(htmlString);
$('.apple', '#fruits'
nginx 错误日志 nginx accept() failed (24: Too many open files)
原因是 Linux 设置了软硬文件句柄和打开文件的数目,你可以使用 ulimit 命令来查看这些限制。什么是ulimit?ulimit 描述符用于限制用户打开的文件数量,让单个用户不至于打开较多的文件,导致系统奔溃或者资源不足的情况。Linux中一切皆文件,所以文件的含义是很广的。unlimit 还可以限制所创建的内核文件的大小、进程数据块的大小、Shell 进程创建文件的大小、内存锁住的大小、常驻内存集的大小、打开文件描述符的数量、分配堆栈的最大大小、CPU 时间、单个用户
nginx.confload_module modules/ngx_http_js_module.so;
#user nobody;
worker_processes 1;
#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid;
events {
worker_connections 1024;
}
http {
include mime.types;
修改配置文件:/etc/ssh/sshd_config#ClientAliveInterval 0
#ClientAliveCountMax 3
ClientAliveInterval 60
ClientAliveCountMax 3
ClientAliveInterval 0指定了服务器端向客户端请求消息的时间间隔, 默认是0, 不发送。设置60表示每分钟发送一次, 客户端响应, 就保持连接了。ClientAliveCountMax 3表示服务器发出请求后客户端没有响应的次数达到3次以后, 就自动断开。
1. 登录到服务器,生成 SSH 的密钥和公钥
ssh-keygen -t rsa
将公钥复制到 authorzied_keys 文件
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
修改 authorized_keys 权限为 644,.ssh 权限为700
chown -R 700 ~/.ssh
chown -R 644 ~/.ssh/authorized_keys
ls -a .ssh #查看用户权限
备注,生成的证书不留空证书密码的话,别人有证书也无法登录。
然后,下载服务器上生成的 ~/.ssh/id_rsa 私钥文件到本地。
2. 修改服
正常情况下载视频:ffmpeg -i m3u8-path -c copy OUTPUT.mp4
ffmpeg -i m3u8-path -vcodec copy -acodec copy OUTPUT.mp4
ffmpeg -i https://test.com/playlist.m3u8 -c copy OUTPUT.mp4
下载加密的 m3u8:1. playlist.m3u8的文件#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MEDIA-SEQUENC
chmod 修改项目文件夹的权限以后,git status 发生了大量变化的文件。原因是 Git 不仅能够管理文件的版本,而且能够管理对文件的访问权限。通常,一个文件的访问权限可以分为xrw,这些属性也被纳入到Git库的管理。修改文件的访问权限,也是对git库中文件的 modify,执行git status 会看到变化。filemode 简介Git对文件的访问权限的管理与配置选项core.filemode有关。core.filemode选项默认true,即区分文件的执行权限,校验Git的Index中和工作目录中的文件权限。查看 filemode 选项git config --get core.
ctx.request.ip请求远程地址。 当 app.proxy 设置为 true 时,支持 X-Forwarded-Host。1, 在 Nginx 反向代理配置 proxy_pass 的部分添加这样一行。 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;2, 在 Koa 应用里设置 app.proxy 为 true。X-Forwarded-For 定义X-Forwarded-For (XFF) 在客户端访问服务器的过程中如果需要经过HTTP代理或者负载均衡服务器,可以被用来获取最初发起请求的客户端的IP地址,这个消息首
npm install sharp --unsafe-perm
sharp@0.28.1 install /space/www/cn_restfulapi/node_modules/sharp
(node install/libvips && node install/dll-copy && prebuild-install) || (node-gyp rebuild && node install/dll-copy)
sharp: Downloading https://github.com/lovell/sharp-libv
SELECT id,title FROM tb_item GROUP BY id
SELECT id,title,count(*) AS counter FROM tb_item GROUP BY id
counter 实际上是每组的计数统计分组后的数据,应该使用这样的子查询:select count(*) from (select count(*) FROM service GROUP BY name,service) t
实例:var replacements = {tags:"11,12,13"}
var sql = `
SELECT id,tags,title,r.*
一、concat()函数concat(str1, str2,...)
将多个字符串连接成一个字符串。返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。例子:select concat (id, title, counter) as info from tb_user;
select concat (id, ',', title, ',', counter) as info from tb_user;
二、concat_ws()函数concat_ws(separator, str1, str2, ...)
和concat()一样,将多个字符串连接成一个字符
MySQL手册中find_in_set函数的语法:FIND_IN_SET(str,strlist)
str 要查询的字符串strlist 字段名 参数以”,”分隔 如 (1,2,6,8)查询字段(strlist)中包含(str)的结果,返回结果为null或记录假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。 一个字符串列表就是一个由一些被 ‘,’ 符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则FIND_IN_SET() 函数被优化,使用比特计算。 如果str不在strlist 或strlist
1,cheerio 获取一个文本节点,该节点没有html标签,比如想获取html中的“猪突猛进” a href="#"
猪突猛进
span 2021年3月12日 /span
/a
var text = $("#itemInfo").contents().filter(function () {
return this.nodeType === 3;
}).text();
2,Node.js 获取 IP V6 内容出现超时问题的解决方法本地是IP V4,获取IP V6内容的时候,提示:Error: connect ETIMEDOUT 172.67.21
显示所有重复数据分组SELECT
origin_id
FROM
topk88_product
GROUP BY origin_id
HAVING count(*) 1
删除所有重复DELETE FROM topk88_product
WHERE origin_id IN (
SELECT
origin_id
FROM
topk88_product
GROUP BY origin_id
HAVING count(*) 1
);
提示:You can't specify tar
项目需要采集日文网站,该日文网站编码是 EUC-JP。
原采集函数是:
// 下载指定页面 HTML
function getHtml(url) {
var hp = http;
if(url.substr(0,5) == "https"){
hp = https;
}
return new Promise(function (resolve, reject) {
hp.get(url, function (res) {
var html = '';
res.on('data', function (data) {
h
Nginx 报错 open() "nginx/fastcgi_temp/7/14/0000000147" failed (13: Permission denied) while reading upstream网站使用的是 Wordpress 无法正常打开某些页面,查看日志报错[crit] 866#0: *698736 open() "/space/nginx/fastcgi_temp/7/14/0000000147" failed (13: Permission denied) while reading upstream, client: 39.149.237.52, server: s
一、ASCII 码所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。「加ascii图」 二、ASCII 编码的缺点英语用128个符号编码就够了,但是用来表示其他语言,128个符号是不够的。一些欧洲国家就决定,利用字节中闲置的最高位编入新的符号。 比如,130在法语编码中代表了é,在希伯来语编码中却代表了字母Gimel (ג),在俄语编码中又会代表另一个符号。但是不管怎样,所有这些编码方式中,0--127表示的符号是一样的,不一样的只是128--255的这一段。 至于亚洲国家的文字,使用的符号就更多了,
add_theme_page()函数add_theme_page()函数会在后台“外观”菜单项下面新建一个菜单项,有助于我们自己修改主题时功能的扩展。语法结构add_theme_page( $page_title, $menu_title, $capability, $menu_slug, $function);
page_titile title标签的内容menu_title 显示在后台左边菜单的标题capability 访问这个页面需要的权限menu_slug 别名,需要独一无二哦自己命名function 执行的函数例子:# 加入主题的functions.php即可
function r
通用HTTP身份验证有几种身份验证模式,每种模式在安全强度不同,在客户机或服务器软件中的可用性方面可能有所不同。最常见的认证方案是“基本”认证方案,下面将详细介绍它。参考:https://javascript.net.cn/article?id=628IANA维护着一个认证方案列表,但是主机服务也提供了其他的认证方案,比如Amazon AWS。常见的认证方案包括:BasicSee RFC 7617, base64-encoded credentials. More information below.https://tools.ietf.org/html/rfc7617BearerSee RF
Content-Disposition 通常作用于两种情况中,“作为消息主体中的消息头”或“作为multipart body中的消息头”作为消息主体中的消息头一般情况下,Content-Disposition 响应头指示返回的内容,是以内联的形式(即网页或者页面的一部分),还是以附件的形式下载并保存到本地。Content-Disposition: inline默认值,表示回复中的消息体会以页面的一部分或者整个页面的形式展示Content-Disposition: attachment表示消息体应该被下载到本地;Content-Disposition: attachment; filename=
所有标签