SEOSO,是为了网站在搜索引擎中的自然排名,引入更多的用户流量。SEO的技巧有很多,比如多在官网发布高质量的文章,将文章的url做静态化,在文章中出现更多与搜索相关的关键词,自建网站群等等。百度收录百度定期收录优质文章(原创度高),如何判断一篇文章是否被收录?有一个简单的方法:直接在百度的搜索框中输入文章的链接,如果有结果并且结果中有对应文章的链接,就说明该文章已经被收录。代码实现我用nodejs封装了一个文章原创度查询和采集计算的库,已经放在Github上了。这里我就自己对isURLIncluded接口的思路进行梳理。原理很简单,就是上面说的方法,但是有一些细节。isURLIncludedconstbaiduSearchUrl='https://www.baidu.com/s?wd=';异步函数isURLIncluded(url){url=url.trim();让urlParsed=URL.parse(url);letbody=awaitsendRequest(baiduSearchUrl+url);让$=cheerio.load(body);让firstBlock=$('#1');让emptyBlock=$('#container.content_none');if(firstBlock.length>0){letfirstLinkText=firstBlock.find('.f13>a>b').eq(0).text();//三。和四个。将有firstLinkText=firstLinkText.split('...')[0].trim();//域名开头//使用协议if(url.substr(0,firstLinkText.length)===firstLinkText){returntrue;}letprotocol=urlParsed.protocol+"//";让urlNoProtocol=url.substr(protocol.length);返回urlNoProtocol.substr(0,firstLinkText.length)===firstLinkText}elseif(emptyBlock.length>0){returnfalse;}else{thrownewError('访问频率太快');}}思路直接调用百度接口查询后应考虑如下情况:├──网络正常|──有查询结果|──无查询结果|──其他错误(如百度反爬虫策略)├──网络错误有查询结果我用的html有两种情况是通过id=1的元素(即第一个查询结果)判断没有查询结果的(一种是class=content_none元素,一种是hit_top_new元素)。对于我有查询结果的情况,我比较百度给我的链接和输入的链接取firstLinkText=firstLinkText.split('...')[0].trim();的第一部分然后用这部分字符串与输入链接进行比较(两种,因为百度给出的结果有时有协议头,有时没有)与协议头比较if(articleUrl.substr(0,firstLinkText.length)===firstLinkText){returntrue;}没有协议头的比较返回articleUrlNoProtocol.substr(0,firstLinkText.length)===firstLinkText
