自动采集编写 学习心得:Nodejs学习笔记(十一)
优采云 发布时间: 2022-12-06 20:46自动采集编写 学习心得:Nodejs学习笔记(十一)
写在之前
很多人都有做数据采集的需求,可以用不同的语言,不同的方式来实现。之前用C#写过,但是发送各种请求和定期的数据分析比较麻烦。总的来说,没什么不好的,就是效率差了点。
用nodejs写采集程序效率更高(可能只是相对于C#而言)。今天主要用一个例子来谈谈使用nodejs实现数据采集器,主要使用request和cheerio。
request :用于http请求
cheerio:用于提取请求返回的html中需要的信息(与jquery用法一致)
例子
单单讲API的使用是没有意思的,没必要记住所有的API。让我们开始这个例子
或者八卦:
nodejs开发工具还是很多的。之前也推荐过sublime。自从微软推出了Visual Studio Code,我就转用它来做nodejs开发。
用它开发还是比较舒服的,免配置,启动快,自动完成,查看定义和引用,快速搜索等等,和VS一贯的风格,应该会越来越好,所以推荐^_ ^!
索取样品
从中获取文章的“标题”、“地址”、“发布时间”、“封面图”
采集器
1.创建项目文件夹sampleDAU
2.创建一个package.json文件
{
"name": "Wilson_SampleDAU",
"version": "0.0.1",
"private": false,
"dependencies": {
"request":"*",
"cheerio":"*"
}
}
3.在终端使用npm安装引用
cd 项目根目录
npm install
4.创建app.js并编写采集器代码
首先用浏览器打开你要的网址采集,使用开发者工具查看HTML结构,然后根据结构编写解析代码
/*
* 功能: 数据采集
* 创建人: Wilson
* 时间: 2015-07-29
*/
var request = require('request'),
cheerio = require('cheerio'),
URL_36KR = 'http://36kr.com/'; //36氪
/* 开启数据采集器 */
function dataCollectorStartup() {
dataRequest(URL_36KR);
}
/* 数据请求 */
function dataRequest(dataUrl)
{
request({
url: dataUrl,
method: 'GET'
}, function(err, res, body) {
if (err) {
console.log(dataUrl)
console.error('[ERROR]Collection' + err);
return;
}
switch(dataUrl)
{
case URL_36KR:
<p>
dataParse36Kr(body);
break;
}
});
}
/* 36kr 数据解析 */
function dataParse36Kr(body)
{
console.log('============================================================================================');
console.log('======================================36kr==================================================');
console.log('============================================================================================');
var $ = cheerio.load(body);
var articles = $('article')
for (var i = 0; i < articles.length; i++) {
var article = articles[i];
var descDoms = $(article).find('.desc');
if(descDoms.length == 0)
{
continue;
}
var coverDom = $(article).children().first();
var titleDom = $(descDoms).find('.info_flow_news_title');
var timeDom = $(descDoms).find('.timeago');
var titleVal = titleDom.text();
var urlVal = titleDom.attr('href');
var timeVal = timeDom.attr('title');
var coverUrl = coverDom.attr('data-lazyload');
//处理时间
var timeDateSecs = new Date(timeVal).getTime() / 1000;
if(urlVal != undefined)
{
console.info('--------------------------------');
console.info('标题:' + titleVal);
console.info('地址:' + urlVal);
console.info('时间:' + timeDateSecs);
console.info('封面:' + coverUrl);
console.info('--------------------------------');
}
};
}
dataCollectorStartup();</p>
试验结果
这 采集器 完成了。其实就是一个get请求的请求。body,也就是HTML代码,会在请求回调中返回,和jquery库语法一样解析cheerio库,取出想要的数据!
加入代理
制作一个采集器DEMO,以上基本完成。如果需要长时间使用防止网站被屏蔽,还是需要添加代理列表
举个例子,我推荐一些网上免费代理的例子做成proxylist.js,里面提供了一个随机选择代理的功能
var PROXY_LIST = [{"ip":"111.1.55.136","port":"55336"},{"ip":"111.1.54.91","port":"55336"},{"ip":"111.1.56.19","port":"55336"}
,{"ip":"112.114.63.16","port":"55336"},{"ip":"106.58.63.83","port":"55336"},{"ip":"119.188.133.54","port":"55336"}
,{"ip":"106.58.63.84","port":"55336"},{"ip":"183.95.132.171","port":"55336"},{"ip":"11.12.14.9","port":"55336"}
,{"ip":"60.164.223.16","port":"55336"},{"ip":"117.185.13.87","port":"8080"},{"ip":"112.114.63.20","port":"55336"}
,{"ip":"188.134.19.102","port":"3129"},{"ip":"106.58.63.80","port":"55336"},{"ip":"60.164.223.20","port":"55336"}
,{"ip":"106.58.63.78","port":"55336"},{"ip":"112.114.63.23","port":"55336"},{"ip":"112.114.63.30","port":"55336"}
,{"ip":"60.164.223.14","port":"55336"},{"ip":"190.202.82.234","port":"3128"},{"ip":"60.164.223.15","port":"55336"}
,{"ip":"60.164.223.5","port":"55336"},{"ip":"221.204.9.28","port":"55336"},{"ip":"60.164.223.2","port":"55336"}
,{"ip":"139.214.113.84","port":"55336"} ,{"ip":"112.25.49.14","port":"55336"},{"ip":"221.204.9.19","port":"55336"}
,{"ip":"221.204.9.39","port":"55336"},{"ip":"113.207.57.18","port":"55336"} ,{"ip":"112.25.62.15","port":"55336"}
,{"ip":"60.5.255.143","port":"55336"},{"ip":"221.204.9.18","port":"55336"},{"ip":"60.5.255.145","port":"55336"}
,{"ip":"221.204.9.16","port":"55336"},{"ip":"183.232.82.132","port":"55336"},{"ip":"113.207.62.78","port":"55336"}
,{"ip":"60.5.255.144","port":"55336"} ,{"ip":"60.5.255.141","port":"55336"},{"ip":"221.204.9.23","port":"55336"}
,{"ip":"157.122.96.50","port":"55336"},{"ip":"218.61.39.41","port":"55336"} ,{"ip":"221.204.9.26","port":"55336"}
,{"ip":"112.112.43.213","port":"55336"},{"ip":"60.5.255.138","port":"55336"},{"ip":"60.5.255.133","port":"55336"}
,{"ip":"221.204.9.25","port":"55336"},{"ip":"111.161.35.56","port":"55336"},{"ip":"111.161.35.49","port":"55336"}
,{"ip":"183.129.134.226","port":"8080"} ,{"ip":"58.220.10.86","port":"80"},{"ip":"183.87.117.44","port":"80"}
,{"ip":"211.23.19.130","port":"80"},{"ip":"61.234.249.107","port":"8118"},{"ip":"200.20.168.140","port":"80"}
,{"ip":"111.1.46.176","port":"55336"},{"ip":"120.203.158.149","port":"8118"},{"ip":"70.39.189.6","port":"9090"}
,{"ip":"210.6.237.191","port":"3128"},{"ip":"122.155.195.26","port":"8080"}];
module.exports.GetProxy = function () {
var randomNum = parseInt(Math.floor(Math.random() * PROXY_LIST.length));
var proxy = PROXY_LIST[randomNum];
return 'http://' + proxy.ip + ':' + proxy.port;
}
对 app.js 代码进行以下更改
/*
* 功能: 数据采集
* 创建人: Wilson
* 时间: 2015-07-29
*/
var request = require('request'),
cheerio = require('cheerio'),
URL_36KR = 'http://36kr.com/', //36氪
Proxy = require('./proxylist.js');
...
/* 数据请求 */
function dataRequest(dataUrl)
{
request({
url: dataUrl,
proxy: Proxy.GetProxy(),
method: 'GET'
}, function(err, res, body) {
...
}
}
...
dataCollectorStartup()
setInterval(dataCollectorStartup, 10000);
这样就完成了改造,添加代码,添加setInterval定时执行!
教程:2招,掌握SEO优化技巧丨25份SEO技巧笔记及工具下载
这是一个令人耳目一新的笔记
本笔记来源:
一季知识分享社区趣味分享知识课堂
第10期《全面掌握SEO优化策略与技巧》
时间:6 月 26 日星期二晚上 8 点
主讲人:ICER,易记知识社区成员,甲方负责人
课程大纲
PART1 SEO优化的重要性和必要性
PART2 SEO优化前的七个必要步骤
PART3 网站SEO优化的两个关键步骤
PART4 SEO优化人员的职业道德
学习资料
14个SEO技巧笔记(展示部分)
11 个 SEO 工具(显示部分)
请滚动到文章末尾领取SEO技巧笔记和工具(共25份)。
- 文本 -
图1 骨架图
那我就直接开始了,大家晚上好。
今天跟大家分享的是SEO优化,也就是我们所说的搜索引擎优化。
第1部分
SEO优化的重要性和必要性
首先我们要明确,我们为什么要做网站SEO优化?
首先是SEO优化相对于竞价广告来说,对于点击是免费的,所以我们不用担心恶意点击和高昂的日常费用。
二是只要我们通过正常手段而不是作弊手段进行SEO优化,其效果是可以长期有效维持的。
图 2
那么SEO优化能给我们带来什么呢?
首先,SEO可以增加网站页面的整体曝光率,从而增加我们网站的整体流量。
对于业务网站,SEO可以整体提升我们整个网站页面的曝光度和流量,进而可以增加我们业务网站的一些转化。
第2部分
SEO优化前必须具备的七个步骤
我们如何优化 SEO?
首先,让我们做一些SEO优化前的准备工作。
图 3
上图(图3)是截取的部分思维导图。
首先,第一项是301重定向
301 重定向是将网页中的一个 URL 永久转移到另一个 URL。我们可以通过301重定向的设置,将我们网站中所有带www的域名转为不带www的网址。
这样做有两个好处:
对于搜索引擎,这有效地减少了整个网站页面的重复收录。因为这两个网站页面是相同的两个URL。
对于用户来说,可以直接进入我的页面,不用输入www。这样更方便快捷,从而提升用户的整体体验。
图 4
301重定向还有一个作用就是当域名发生变化时,我们可以通过301重定向的设置,将原来的网站的权重转移到另一个新的域名上。这样可以保证我们的网站权限不会发生变化,也不会因为我们的网站域名的变化而导致我们的网站权限丢失。
第二项是死链接的优化
我们的网站难免会有一些时不时打不开的死链接。所以我们要定期检查和优化它。
图 5
对于死链接的查询方法,我们可以在站长工具中进行查询。如图(图5)
第三项是目录文件结构
图 6
我们规范地显示网站 页面结构。这样更有利于搜索引擎抓取我们整个网站页面。这里所说的标准化,是指我们整个目录结构的组织和层次比较清晰。
第四项是404页面的优化
访问者在浏览我们的网站时,有一些死链接打不开,此时出现的页面就是我们网站的404页面。(图7)
图 7
我们对自己的网站错误页面进行了优化,更加完善,更贴近用户体验,从而减少用户的流失,从而降低网站的整体跳出率。
图 8
如图(图8)所示是我在制作网站错误页面时需要注意的一些关键点。
第五项是Robots文件的设置
Robots 文件是搜索引擎在抓取和访问 网站 时首先访问的文件。
我们可以在这个文件上设置一个搜索引擎。设置哪些页面可以被搜索引擎抓取,哪些页面不可以被搜索引擎抓取。
如果是个人网站,涉及个人隐私的部分可以设置不被搜索引擎抓取。这样它就不会在 网站 中被搜索和检查。如果是一般业务网站,我们会设置为抓取所有页面。
图 9
如图(图9)所示,这是写文件时常用的一些写法。其中的*表示全部,如果后面是空格,不写则表示无。
第六项是伪静态设置
网站的页面通常分为静态页面和动态页面。
对于搜索引擎来说,更倾向于抓取静态页面。但是我们现在的网站中的大部分页面都是动态的,所以为了让搜索引擎更好的抓取我们的页面,我们将我们的页面设置为伪静态的。
最基本和最简单的方法之一是使指向页面的链接以 .html 结尾。
当然,我只提到了其中一种,伪静态的设置方法还有很多。
这样做的目的是让我们 网站 更容易被搜索引擎抓取。
第七项是网站地图的设置
我们设置了网站的地图,它的作用是让我们的用户和我们的搜索引擎更直观、更清晰的找到对应的栏目、对应的内容以及我们对应的网站的分类。
图 10
网站 地图制作(图10)
推荐大家使用第一种和第二种,即一些建站系统自带的地图制作工具。
不建议大家使用第三种,程序员写的,因为这里面涉及到一些网站的代码,非专业的人可能看不懂。
前两个是直接在后台生成和设置的。
最后一项是关键词的设置
通常,一个网站会被分为三级页面:
第一级页面是我们的 网站 主页。
第二级页面是我们的 网站 部分页面。
第三层是部分页面下面的文章页面。
我们将为 网站 中的每个页面设置 关键词。
关键词设置原则如下:
首先,将每页的 关键词 数量设置在 3 到 5 之间。
二级和二级页面,即栏目页,将一级关键词设置为扩展关键词,二级关键词作为栏目关键词。
三三级页面是文章页面设置长尾关键词和文章关键词
完成这些准备工作后,我们将对我们的网站进行整体SEO优化。
第 3 部分
SEO优化的两个关键步骤
整体优化操作分为两步:
第一步是优化网站。
第二步是站外优化。
首先说说站内优化。
先说说搜索引擎爬取我们的页面,被用户看到的过程。
首先,我们的页面 文章 已被抓取并被搜索 收录。那么在我们的文章中就会有一些关键词,也就是我们设置的文章的关键词,或者说其他层级页面的关键词。当用户搜索 关键词 时,会显示我们页面的一部分。这样,当用户单击时,它将转到我的 网站 页面。
图 11
举个例子(图11)。比如北京美味学院。
当用户在百度PC搜索引擎上搜索Delicious Academy时,会出现很多带有关键词的Delicious Academy页面。
我们可以看到当美味学院的关键词和我们北京美味学院关键词重合的时候,它的关键词会变成红色,也就是变成红色字体。
这些都可以在我们的页面上找到。
让我们谈谈如何设置这些。
图 12
其实刚才我们看到的页面就是设置我们整个页面的TDK(如图12所示),也就是简写三个字。
T是Title,页面的标题。
D是Discription,页面的描述。
K是关键字,页面的关键词。
图 13
我们设置的方式在我发的截图上(如图13)。您可以看到我们的标题、描述和关键字在子代码中的位置。
对应的例子就是刚才在百度搜索到的美味学院。
搜索到的Delicious Academy这四个字就是我们的Keywords关键词。那么出现的北京美味学院六个字就是我们页面的标题。下面的小字是北京美味学院、手工美味、生活学院等,是我们整个页面的描述。
设置的方法就是在我们的代码中设置。
然后在思维导图中可以看到TDK的一些设置规范和原理。(图12)
关键词的个数,或者其他核心关键词的设置等等,这些我之前都提到过。
接下来重点说一下,不要恶意堆砌关键词这道题。
通常,我们将关键词密度控制在每页 3% 到 8% 之间。
当我们的关键词密度没有达到这个3%到8%的时候,需要注意的一点是,我们一定不要重复恶意积累关键词,也就是一直写我们的关键词。这对用户体验和搜索引擎抓取都是非常不友好的。
那么当我们的 关键词 密度不够时我们该怎么办?
其实我们可以在很多地方加上关键词。
以下是我们可以添加的几个地方:
1.整个页面首页的上半部分
2.页面底部标签
3.轮播(横幅)
4.标志
5.首页图片
在这些地方添加关键词可以防止恶意积累。
我们还可以在页面中添加一篇文章文章,让文章增加其关键词的密度。
图 14
关键词密度查询方法可以通过站长工具实现。
当我们输入网站域名进行SEO综合查询时,该查询结果会显示关键词密度的数据。
建议的 关键词 密度介于 2% 和 8% 之间。
我的建议是最佳选择在3%到8%之间。
说个题外话。
为什么不恶意堆积关键词。
SEO技术可分为白帽和黑帽。
以上我教给大家的方法都是SEO白帽技术,也就是不违反搜索引擎的合规技术。那么黑帽技术则相反,是非法的,比如恶意积累关键词,积累链接。这些方法确实可以在短时间内提高网站的排名,但是一旦搜索引擎发现这些恶意方法,就会对网站进行惩罚。惩罚手段有很多种。其中最主要的是 网站 不会被抓取。
网站的二级页面、子栏目页面和三级页面文章页面,它们的TDK设置方法与首页大致相同。
让我关注 文章 页面。
图 15
文章 页面,我们发布 文章 最好是 原创文章。
使用原创度数检测工具时,原创度数应该在50%左右。
如果 文章原创 太低,搜索引擎会认为我们的 文章 是抄袭,可能不会抓取我们的页面。
文章中关键词的设置原则就是我们到处调用的。
1、网页标题、Discripiton、Keywords、页面正文必须同时出现关键词。
2、页面文字中关键词的密度最好控制在3-5。第一个关键词要加粗,提醒用户
3、关键词也应该出现在其他页面的锚文本中,实现两个文章之间的相互链接,让我们的用户访问更多的页面,提升整体的用户体验。
最后说一下文章中的内部链接。
文章和首页,文章和栏目,文章和url标签,只需要互相链接一部分,自己合理设置,实现一些相互跳转在 文章 改变。
以上就是页面关键词的优化方法和每一级的优化原则。我们每增加一个页面,都要按照这个方法来设置。
第二步是站外优化。
第一项是友情链接。
图 16
我从新东方官网的一个页面截取了这张截图(如图16所示)。
友情链接是指其他网站中的友情链接可以链接到我们的网站。
一般设置在首页底部,会有专门的友情链接栏目。
我们在选择友情链接时有两个原则:
第一个就是对方的网站肯定和我们的网站内容有一定的关联。
确保通过友情链接进入的访问者对我的网站具有相同或相似的浏览或访问目的。
二是对方的权限比这个网站高。
与权重高于我们的网站的友情链接可以有效增加我们网站的整体权重。
有两种类型的链接:
一种是纯友情链接。通过一些朋友或您认识的人交换纯友谊链接。
另一种是定期购买友情链接。那么对方的网站权重一定要高于我们的才有价值。
友情链接也是我们整体SEO优化中非常重要的一部分。因此,我们要定期查看友情链接。
图 17
让我们谈谈nofollow属性。
图 18
nofollow 是 网站 代码中 a 标签的一个属性。
nofollow的作用是在这个链接中,所有的内容都不会占据网站的整体权重。
所以我们必须定期检查链接。需要检查四件事:
1、对方是否与我们交换过友情链接。
2、我方友情链接部分,对方是否添加了nofollow属性。如果添加它们,它们的网站权重不会分配给我们,也就是说,它们不会带动我们的网站整体权重上升。
3.观察对方网站是否有违规内容。
4. 网站历史是否被K。
如果以上四项出现问题,及时与对方网站沟通。
二是外部链接的优化。
外链优化是指向第三方平台发送链接,如百度知乎、天涯、豆瓣、搜搜、Ask,以及博客、微博、知乎等。
通过第三方平台点击的链接可以有效地为我们的网站带来流量。
当我们在第三方平台上发布我们的外部链接时,我们需要设置我们的跟踪标签。在统计上,我们可以区分出引流效果好的平台。
我们可以通过 网站 中安装的一些统计工具来查看哪些平台为我们吸引了更多流量。
一些常用的网站流量监控工具,比如cmcc、51、百度统计。通过百度统计安装我们的统计代码,可以检测到我们的网站和网站中的一些页面。
综上所述,SEO骨架大体分为四个部分:
优化前分析定位
网站结构
网站诊断
关键词策略
第 4 部分
SEO优化人员的职业道德
SEO优化是一个长期的过程。
如果要做SEO优化,就需要根据SEO骨架进行长期不间断的维护和优化。
最后送大家一份SEO优化人员应该遵守的行业准则。
SEO行业近两年发展迅速,产业化趋势大。然而,目前SEO行业从业者水平参差不齐,整个行业乱象丛生、乱象丛生。《SEO行业标准》是很有必要的。
SEO行业标准的建立有利于SEO之间的公平竞争,同时可以保障SEO客户的权益:
1、SEO优化人员一定不能对不同的客户区别对待,每个客户的利益都是一样的,平均的。所有客户享有同等待遇,获得相同或可比的搜索引擎优化权利。
2、SEO从业人员不得冒用他人成果,包括将他人成果,如SEO案例、文案等,视为自己的作品,擅自使用他人资料等。
3、SEO从业者不得在宣传中夸大或虚构其能力、*敏*感*词*、培训、业绩、认证、合作伙伴、技术实力和经验,禁止对同行业SEO从业者进行恶意攻击和侮辱。与行为。
4、在接受SEO业务时,SEO从业人员应采取相应的分析措施,看客户的网站是否存在欺骗行为。一旦发现,他们可以与客户协调解决问题。如果欺骗没有结束,SEO从业者有权无条件拒绝。
5、SEO优化人员应对客户负责,确保客户信息权益。未经客户同意,SEO服务案例不得向他人公开,对客户要求保密的信息,严守纪律,诚信待人,确保客户信息不被泄露。
6、SEO优化人员不得故意误导、伤害来访用户。合理、正确地向搜索引擎提供相关内容,不得使用桥接页面、欺骗页面、诱饵页面等方式欺骗搜索引擎和用户。
7、SEO优化人员不得故意违反搜索引擎禁止规则。搜索引擎算法排名规则调整时,SEO从业人员应及时修复客户网站存在的问题。网站修改前,SEO从业人员应及时向客户反馈,征得客户同意后合理调整网页。
8、SEO优化人员不得违反任何法律法规,禁止接受制作、推广马克六、淫秽、盗版等违法网站的网站优化。
九、SEO优化人员应尽最大努力为客户做推广网站,客户为SEO优化人员的服务付费,SEO优化人员使用适当合理的搜索引擎规则来改善或保证客户网站的在搜索引擎中的相应位置。
10. SEO优化人员不允许给用户不切实际的承诺,包括关键词排名位置的确定,关键词排名的确切数量,搜索引擎算法日新月异,还有包括不诚实行为,例如保证固定的排名承诺。SEO优化人员应为客户提供明确的优化修改方法,包括网站内容、构建、美化、增加用户体验、合理的推广建议,并与客户协商后获得相应的权限。网站输入合理修改,不得擅自窃取客户源代码和内容。
问答
问:网站体重是什么意思?
A:网站权重是搜索引擎给我们网站的权威评价。一般来说,一个网站的权重越高,它在搜索引擎中的权重和比例就越大,那么通过我们的搜索引擎自然排名就会越好。一般来说,网站的权重分为十级,从零到十。通常我们个人的 网站,我们构建的第一个 网站 从头开始。而有的与教育或政府相关,即以.结尾的网站,其网站权重自然会高于其他网站。
Q:比如我是甲方,公司官网是外包给第三方的。如果我要做SEO,是不是要找乙方要网站源码,然后自己在源码里加代码?
A:外包公司是第三方,会给你网站管理背景。如果他们不专业,他们会在网站后台的管理页面给你一个SEO设置。比如首页,SEO优化就是关键词设置,有单独的后台设置功能。如果没有,说明第三方公司不重视SEO,或者没有给你这个权限。您可能需要修改此代码。
Q:没有SEO,搜索引擎能找到网站吗?
A:这不是搜索引擎能不能找到的问题。
当我们的页面被搜索引擎抓取时。当用户搜索时,我们的搜索引擎自然会进行分类。如果我们的 关键词 被触发,我们的页面就会显示出来。这不是不做SEO。我们的SEO就是让整个网站坐的更好,也就是更好的优化。有可能被收录找到,但是我们的收录机会比较小,所以我们的页面被搜索到的机会也比较小。
这是页面没有特别注意SEO优化的时候。其实它也有SEO,只是优化的比较少。所以我们展示和搜索的机会比较小。当然,搜索引擎 收录 还可以找到很多其他的方法。比如找到我们的方式可以是通过一些竞价的方式,通过一些广告等等,当然这些都是有偿的。
Q:如何评估SEO的效果?你在看热门歌曲吗?
A:这取决于你内部如何评价。点击次数也可以作为衡量标准。
首先,我觉得最基本的是我们所有页面整体有一个收录的情况。当我们保证页面可以被搜索到收入时,我们只能通过搜索关键词来搜索到我们的页面。第二个就是我们刚才说的整体的原则,就是网站的整体结构。同样是 关键词 的整体密度。取决于选择的一些原则和品质关键词。
我可以看到我们的一些 网站 总体流量。比如外链进入的流量,PV,每天的点击量,这些都可以衡量我SEO的整体优化效果。
最后的评价肯定会落到我们的网站访客点击了多少,有没有增加,增加的转化率是多少,有没有购买我们的产品。
学习资料获取方式
关注本公众号,微信后台回复20180628,
可以获得本次分享的学习资料
背景截图↓↓
-结尾-