Python是一种非常适合SEO学习的语言,不仅语法简单,而且很多功能还能通过各种库来实现,可谓SEO居家必备的“良药”。

背景

作为SEO,每天都有一批数据需要记录,抓取方面,收录方面,流量方面等。

在收录方面,收录率是非常有意义的一个指标,可以直接反映整站或者某频道的收录情况。

我之前使用的是昆哥的软件,可以随机抽取一批页面查询,但后来觉得可以用python做得更自动化,更方便,于是就有了这个脚本。

思路

脚本的整体思路是这样的:

用搜索关键词构建百度搜索URL(查询收录的时候搜索词就是待查页面URL)

获取百度搜索结果页内容

提取百度搜索结果(这里是最终的真实URL)

收录判定

具体代码

#coding=utf-8

import requests

from bs4 import BeautifulSoup as bs

import re

headers = {

'User-Agent': 'Mozilla/4.0+(compatible;+MSIE+8.0;+Windows+NT+5.1;+Trident/4.0;+GTB7.1;+.NET+CLR+2.0.50727)'

} # 设置UA模拟用户,还可设置多个UA提高搜索成功率

def baidu_url(word): # 构建百度搜索URL;因为是查收录,所以只显示了前10个搜索结果,还可以通过rn参数来调整搜索结果的数量

'''

get baidu search url

'''

return 'https://www.baidu.com/s?wd=%s' % word

def baidu_cont(url): # 获取百度搜索结果页内容

r = requests.get(url, headers=headers)

return r.content

def serp_links(word): #获取百度搜索结果的最终URL

'''

get baidu serp links with the word

'''

b_url = baidu_url(word)

soup = bs(baidu_cont(b_url))

b_tags = soup.find_all('h3', {'class': 't'}) # 获取URL的特征值是通过class="t"

b_links = [tag.a['href'] for tag in b_tags]

real_links = []

for link in b_links: # 使用requests库获取了最终URL,而不是快照URL

try:

r = requests.get(link, headers=headers, timeout=120)

except Exception as e:

real_links.append('page404')

else:

real_links.append(r.url)

return real_links

def indexer(url): # 待查URL是否在百度搜索结果的URL列表中,如果在就表示收录,反之未收录

indexed_links = serp_links(url)

if url in indexed_links:

return True

else:

return False

特点

之前也写过python的收录脚本,但感觉不准确,于是这次算是改良版。本次的脚本也有一些优势和劣势。

优势:

准确率高。脚本中比对的是百度搜索结果中最终的真实的URL,而不是快照URL,所以完全不会出现偏差(注:百度在去年做了调整,将标题上链接改为baidu的跳转链接,而不是真实链接);

函数封装。本次脚本跟之前最大的不同就是进行了封装,每次使用只要import一下即可(我对发送邮件也做了封装);当然,也是为了方便其他百度查询,比如百度排名,百度site值;

容错处理。因为平常都是批量查询,并且结合crontab定时任务,所以没有容错很可能中断。我主要通过try和requests的timeout来处理,最主要是前者;

劣势:

速度慢。由于SERP每个结果都要返回最终URL,难免增加了很多次查询,这就导致速度很慢;但这也是目前较稳妥的处理方式,因为查询速度快会导致百度查询失败,弹出验证码;如果要高速查询也不是没有办法,可以通过多线程+更换host来实现;

需要自定义。之前的脚本就是傻瓜版,把URL放在一个文件里,然后运行程序就会看到结果,现在的脚本只能算是一个小引擎,需要投入使用还需要自己配置;不过剩下的工作也不多了,而且自己配置下更能满足自己的需求。

转自【张亚楠Blog】https://www.zhidaow.com/

利用python批量查询企业信息_python批量查询百度收录相关推荐

  1. 利用python批量查询企业信息_python实现批量获取指定文件夹下的所有文件的厂商信息...

    本文实例讲述了python实现批量获取指定文件夹下的所有文件的厂商信息的方法.分享给大家供大家参考.具体如下: 功能代码如下: import os, string, shutil,re import ...

  2. python批量导入网页信息_python批量导入数据进Elasticsearch的实例

    ES在之前的博客已有介绍,提供很多接口,本文介绍如何使用python批量导入.ES官网上有较多说明文档,仔细研究并结合搜索引擎应该不难使用. 先给代码 #coding=utf-8 from datet ...

  3. 利用python爬取租房信息_Python爬虫实战(1)-爬取“房天下”租房信息(超详细)

    #前言html 先看爬到的信息:python 今天主要用到了两个库:Requests和BeautifulSoup.因此我先简单的说一下这两个库的用法,提到的都是此文须要用到的.编程 #Requests ...

  4. 利用python爬取租房信息_python爬取58同城租房信息

    代码: # coding=utf-8 import sys import csv import requests from bs4 import BeautifulSoup ''' 遇到不懂的问题?P ...

  5. 利用python和Sen2cor对Sentinel2进行批量大气校正

    利用python和Sen2cor对Sentinel2进行批量大气校正 p.s本文只适合大量的批量校正,一般两三幅影像的那种就直接搜批量校正就好了. 废话不多说,直接上代码 import os impo ...

  6. [Python] 【原创】[Python源码]企业支付宝自动批量转账脚本

    [Python] [原创][Python源码]企业支付宝自动批量转账脚本 -- coding: utf-8 -- import sys import time import datetime impo ...

  7. 【Python例】利用 python 进行图片文字信息的提取 --- OCR-EasyOCR

    [Python例]利用 python 进行图片文字信息的提取 - OCR-EasyOCR 本文主要用于记录,并使用 python 脚本进行图片文字信息的生成. 什么是 OCR? OCR OCR(Opt ...

  8. 利用Python调用ECMWF欧洲中心API批量下载数据

    前段时间由于需要下载ECMWF(欧洲中期天气预报中心)的再分析数据,学习了如何利用Python调用ECMWF欧洲中心API进行批量下载.这种下载ECMWF数据的方法在官网上有非常详细的介绍.我只是对这 ...

  9. python批量处理excel数据_Python批量处理Excel,真香(超实用!)

    本文介绍了利用Python批量处理Excel文件的一种方法,超实用,超简单.轻松可实现,节省时间不只一点点.文章不长,功能超强. 上菜. 某一天,老板丢个我一个任务.需要将400多张表按照一定条件进行 ...

  10. 利用Python在NASA Earthdata Search 上批量下载MODIS数据

    1.下载网址:https://search.earthdata.nasa.gov 2.第一步:注册账号,右上角Earthdata Login,如实注册,身份可以选择教育.用途可以选择科研团队,记得添加 ...

最新文章

  1. Moment矩计算公式
  2. C/C++ OpenCV滑动条的创建与使用
  3. KMP——怪盗基德的挑战书(hdu4552)
  4. WPF 绕圈进度条(一)
  5. android学习笔记---50_样式与主题,给控件使用样式,给应用使用主题
  6. Android 两个Activity进行数据传送 发送
  7. Python学习教程:Python自动化测试框架需要学习哪些?
  8. 汇编和c语言函数的参数传递,c文件汇编后函数参数传递的不同之处
  9. waf绕过—过360主机卫士sql注入
  10. 外联式 vue+element ui 表格导出e'xcel
  11. 微信撤回消息在服务器可以看到吗,微信撤回消息可以查看了,对方撤回了什么一目了然...
  12. bzoj3029 守卫者的挑战
  13. 百万调音师—Audition降噪
  14. html 文字输出语音,网页上通过JS实现文本的语音朗读
  15. 由点金系统想到的——如何剥开系统美丽的外衣
  16. 浅析IBM的竞争优势
  17. 操作系统面经总结—虚拟内存、内存分页、内存交换与覆盖等
  18. AIOT时代来临,物联网平台(IoT Platform)真有那么重要吗?
  19. SVA 断言翻译笔记(七) 16.15Disable iff用法
  20. 牛逼!前端神器,永远滴神!

热门文章

  1. vue2.0和3.0引入阿里字体图标库的步骤
  2. 植物大战僵尸简单外挂原理及实现
  3. win10安装visio2010出错_win10 office2013安装错误1907解决方法
  4. web应用开发相关技术,CSS盒模型概述
  5. c语言如何判断字符类型,数据类型怎么判断 C语言中如何判断数据类型
  6. python抢课_一个用python实现的东方时尚(驾校)抢课程序
  7. input隐藏边框、设置透明背景色
  8. c++学习书籍推荐《深度探索C++对象模型》下载
  9. 毕业设计,微信小程序-购物小程序
  10. STM32cube HAL库 I2C实现LM75数字温度传感器温度读取,并串口打印