那怎样确认自己的站点是否被百度收录呢?最直接的办法当然是直接搜索网站名称(通常是首页的标题title),但理论上来说,这个办法并不准确,因为有可能已经收录了,但因为权重问题,排名靠后,所以理论上你得将所有搜索结果页都翻遍了都没有才能确认是没收录,工作量太吓人了吧,肯定有更好的办法。
对seo有所了解的人肯定会知道另一个命令:site:xxx.com
,就能将该站点已经收录的所有页面列出来,是精准的,但人的精力是有限的,时不时跑来看一下是否收录浪费时间,能不能通过机器做这个事情呢?
可以的,而且很简单, 我用python写了个小爬虫,隔一会自动去抓取最新的site命令结果,并将结果自动发送到企业微信里,这里就达到了自动监控的目的,非常方便智能,下面分享下实例代码:
首先得先安装requests和lxml两个模块
pip install requests
pip install lxml
以下是具体的代码
#通过抓取某个域名的site指令结果,判断是否已被百度收录代码
import json
import requests
from lxml import etree
import time
if __name__ == '__main__':
while True:
domain = 'xxx.com'
url = 'https://www.baidu.com/s?ie=UTF-8&wd=site%3A'+domain
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36'
}
response = requests.get(url=url, headers=headers)
dom = etree.HTML(response.text)
#通过xpath解析页面结构以判断是否有收录链接
resultList = dom.xpath('//div[contains(@class,"c-container")]')
if len(resultList) > 0:
msg = '百度已收录'+domain+',收录数量'+str(len(resultList))
else:
msg = '百度未收录'+domain
print('抓取完毕!!!', msg, '\n')
#将收录结果发送到企业微信
qiWeiWebHook = 'https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx'
postHeaders = {
'Content-Type': 'application/json'
}
msgData = {
"msgtype": "text",
"text": {
"content": msg
}
}
postResponse = requests.post(qiWeiWebHook, headers=postHeaders, data=json.dumps(msgData))
print(postResponse.text)
#每小时爬取一次
time.sleep(3600)
注意: 1)变量qiWeiWebHook 是企业微信内部群聊机器人里的webhook链接,工作中用于自动发送一些汇报数据或警告非常有用,如果不需要使用微信微信发送,可以注释掉这部分的代码; 2)上面的收录数量只是一页的,如果需要全部的收录数量,需要进行翻页处理并求和即可得到; 以下是运行效果: