• 怎样用python爬虫实现自动监测百度是否收录域名


    怎样用python爬虫实现自动监测百度是否收录域名


    在一些新站点上线时,具有SEO意识的公司/人往往会非常关注自己的网站(域名)是否已经被百度收录了,因为只有百度能搜索得到,你的网站才是真正意义上的在这个世界上存在了(这里援引了一个典故–此前我在某本书里看到一个挺有意思的说法: 在网络时代,如果你不知道世界上是否存在某样事物,就百度一下,如果查不到,就可以认为它不存在)。

    那怎样确认自己的站点是否被百度收录呢?最直接的办法当然是直接搜索网站名称(通常是首页的标题title),但理论上来说,这个办法并不准确,因为有可能已经收录了,但因为权重问题,排名靠后,所以理论上你得将所有搜索结果页都翻遍了都没有才能确认是没收录,工作量太吓人了吧,肯定有更好的办法。

    对seo有所了解的人肯定会知道另一个命令:site:xxx.com,就能将该站点已经收录的所有页面列出来,是精准的,但人的精力是有限的,时不时跑来看一下是否收录浪费时间,能不能通过机器做这个事情呢?

    可以的,而且很简单, 我用python写了个小爬虫,隔一会自动去抓取最新的site命令结果,并将结果自动发送到企业微信里,这里就达到了自动监控的目的,非常方便智能,下面分享下实例代码:

    首先得先安装requests和lxml两个模块

    pip install requests
    pip install lxml
    
    • 1
    • 2

    以下是具体的代码

    #通过抓取某个域名的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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37

    注意:
    1)变量qiWeiWebHook 是企业微信内部群聊机器人里的webhook链接,工作中用于自动发送一些汇报数据或警告非常有用,如果不需要使用微信微信发送,可以注释掉这部分的代码;
    2)上面的收录数量只是一页的,如果需要全部的收录数量,需要进行翻页处理并求和即可得到;
    以下是运行效果:
    在这里插入图片描述
    此外,本人新建了一个爬虫技术交流群,如果你也在研究爬虫,欢迎加群交流
    在这里插入图片描述

  • 相关阅读:
    sqli-labs(less-8)
    记一次IDE硬盘故障的“解决“.2022-11-10
    一些常规的报错和解决方法(持续更新)
    诊所要使用微信预约系统,需准备哪些资料?
    Java学习(三)Java运算符(2)算术运算符
    前端创建对象和数组的方法
    TypeScript 之 Interface
    loj 10078 / 一本通 1500 / 洛谷 P5764【最短路】【dfs枚举排列】
    PyCharm 远程连接服务器并使用服务器的 Jupyter 环境
    C#进阶04——委托和事件
  • 原文地址:https://blog.csdn.net/one_and_only4711/article/details/126155301