前言

该程序正常运行所需要的插件为phantomjs,建议下载mac版本,然后将下载的整个文件夹放在和.py文件同一级的目录下,若是window系统的话则修改程序中的

driver指向的插件目录名称

实现原理

百度的搜索排名它选录的都是你所检索的关键词以及目标网址在第几个结果列表当中,但其中并不包括带“广告”标示的结果,例如

我搜素switch的时候我想知道Nintendo的官网在百度排名中属于第几名,图所示的例子中我在第二页里找到了任天堂的官网nintendo.com,所以switch这个关键词对于任天堂来说在百度的搜索排名是第十二名

我要做的就是根据关键词搜索模拟一次搜索,然后在搜索的结果集当中找到目标网址,匹配之后我再利用phantomjs截取屏幕并在关键的地方给予红框标注,然后再将该截图保存到本地目录当中

首先我们还是得先了解下百度搜索的一些常用参数

pn: 表示从第pn条结果开始显示

rn: 表示每一页要显示多少条结果,默认10条

wd: 表示要搜索的词

其实我们只需要这三个参数就足够了

模拟搜索

首先先记录要请求的url,使用quote处理带中文的url

r_url = 'http://www.baidu.com/s?rn=%s' % rn + '&pn=%s'%((pn_baidu-1)*rn) + "&wd=%s" % wd

r_url = quote(r_url, safe=string.printable)

然后我们用BeautifulSoup提取网页的文本内容

with requests.get('http://www.baidu.com/s', params={'wd': wd, 'pn': (pn_baidu-1)*rn, 'rn': rn}, timeout=7) as r:

soup = BeautifulSoup(r.text, 'html.parser')

我们观察百度的搜索结果列表页的html结构

发现这些结果集都被包含在了content_left这个id里面,然后只有result这个类的标签才是真正搜索出来的结果,其他的result-op这个类的标签并不算在排名中,因为这是那些最新相关信息呀、贴吧等

p = re.compile(r'^result')

contentItem = soup.find(id="content_left").find_all('div', p)

contentItem就是我们列出的所有算在排名内的结果集列表

然后我们通过for循环遍历正则匹配我们输入的网址,看看在哪个下标的结果里面,就是当前的排名

for index, list in enumerate(contentItem):

_list = ''.join(re.split(r'\s+', list.get_text()))

# 如果匹配成功

if str.search(_list):

# xxxxx

如果找到匹配的结果集了,此时就是PhantomJS派上用场的时候了

保存为截图并标注

python的PhantomJS用法可以在谷某或者某度里面查得到,这里就不一一阐述了

我们通过观察到每一个result类的标签都有一个数字id,然后我们只要用js的方法获取这个id然后给它设置红框的样式就可以了

driver.execute_script("""

(function(){

var result = document.getElementById(%s)

result.setAttribute('style','border:5px solid red;padding:10px;margin-left:-15px')

})()

""" %((index + 1)+((pn_baidu-1)*rn)))

同时根据时间戳来命名图片名称

out_img_name = 'baidu_' + time_now_rub + ".jpeg"

driver.save_screenshot(out_img_name)

同时为了减少图片的资源大小,我们用PIL进一步处理图片,并保存为jpeg的格式

# 打开图片

im = Image.open(out_img_name)

# 获取生成的图片宽度和高度

w, h = im.size

# 等比例压缩图片

im.thumbnail((int(w / 1.5), int(h / 1.5)), Image.ANTIALIAS)

# 保存

im.convert('RGB').save(out_img_name, 'JPEG', quality=80)

最后一步我们就是把生成的图片放在一个目录里面了

def findDirectory( img_name ):

# 查询目录,如果没有就创建目录

src_item = ['public','uploads',time_year,time_month,time_day,'']

join_src_item = '/'.join(src_item[0:-1])+'/'

# 判断当前目录文件是否有uploads

if( os.path.exists(join_src_item) == False ):

os.makedirs(join_src_item)

shutil.move(img_name, join_src_item)

else:

shutil.move(img_name, join_src_item)

测试

截图

目录结构

大致思路就是这样子

python关键词排名_python实现查询百度关键词排名并截图标注保存相关推荐

  1. python关键词大全_Python 批量获取Baidu关键词的排名并入库

    1.[代码][Python]代码 #-*- coding: UTF-8 -*- #Python UTF-8 抓取百度关键词V1.0 #key.txt是抓取文件配置 #author PHPer.yang ...

  2. 百度搜索打不开第二页_如何查询百度关键词精准收录位置以及收录量(附代码)...

    现在很多企业以及个人都开始建立自己的网站(毕竟建立一个个人的网站或企业网站是很快的),设置好自己的推广关键词来进行自己的站点内的文章更新以及二开.但是很多都是做了一段时间都放弃了要不然是因为没有带来收 ...

  3. 搜索不包含关键词_新手教程!百度关键词规划师功能详解

    SEM拓词方式有很多种,比如各平台自带的拓词工具.SEO工具如5118.艾奇拓词工具.搜索词报告等等.但其中,百度平台的拓词工具-关键词规划师应该说效率是最高的,除了拓展相关词外,百度关键词规划师还罗 ...

  4. php百度收录排名代码,PHP查询百度收录数量代码

    PHP查询百度收录数量代码,可以直接在网站上显示网站收录数量,如下图: 查询收录数量函数代码 这种是封装的函数方法,方便调用.函数一般写在一个全局文件内,任何地方都可以直接调用这个函数方法.<? ...

  5. 百度seo排名规则_SEO:百度搜索引擎排名规则都有哪些?

    百度搜索引擎排名规则制定了很多的算法来规范搜索这块的市场,因为搜索是一个庞大的市场,大多数的用户都带着自己的问题和需求来寻找自己想要的东西,如果我们没有规范好这块的规范,那么就会导致一系列问题的发生, ...

  6. python搜索关键词自动提交_python+selenium实现百度关键词搜索自动化操作

    缘起 之前公司找外面网络公司做某些业务相关关键词排名,了解了一下相关的情况,网络公司只需要我们提供网站地址和需要做的关键词即可,故猜想他们采取的方式应该是通过模拟用户搜索提升网站权重进而提升排名. 不 ...

  7. python关键词挖掘_Python批量挖掘百度凤巢关键词数据

    [seo工具]关键词挖掘,获取关键词数据比较基础的部分,渠道很多,这次我们来采集凤巢的关键词数据,对关键词的分析,以及使用才是重点!我们先解决基础部分: 每次使用脚本需抓包获取cookies数据登陆百 ...

  8. php 实现查询百度排名,查询百度关键词排名代码 php

    function search($keyword,$url,$page = 1){ static $px = 0; $rsState = false; $enKeyword = urlencode($ ...

  9. selenium基础框架的封装(Python版)这篇帖子在百度关键词搜索的第一位了,有图为证,开心!...

    百度搜索结果页地址:https://www.baidu.com/s?ie=utf-8&f=3&rsv_bp=1&rsv_idx=1&tn=baidu&wd=se ...

最新文章

  1. 计算机专业中专排名,成都计算机中专学校排名
  2. skywalking es7_SpringCloud下skywalking的快速入门
  3. Thymeleaf 常用属性
  4. leetcode 149. Max Points on a Line |149. 直线上最多的点数(Java)
  5. SAP ABAP实用技巧介绍系列之 关于View framework处理Before save event的讨论
  6. DOM-14 【实战】解决事件代理和鼠标移动事件的窘态
  7. 小学计算机课教学设计,小学信息技术教学设计三篇
  8. 7-1 是否同一棵二叉搜索树 (30分)
  9. 关于质量标准化的思考和实践
  10. 内核热补丁,真的安全么?
  11. python notebook配置_使用 Jupyter Notebook 配置 Stata\Python\Julia\R
  12. 【ElasticSearch】Es 源码之 UsageService 源码解读
  13. 风控五大模型、三大风险指的是什么--几大模型PD、LGD、评分模型都有哪些细节点
  14. 达摩院清华博士:摸鱼,有助于你灵光闪现
  15. 2020 dns排名_2020年度DNS年度全球直销排名
  16. 数字图像处理与Python实现-边缘检测-Roberts算子边缘检测
  17. Dos系统功能的调用
  18. STM32入门(一)
  19. 联想计算机安装系统,联想计算机重新安装系统的详细步骤?
  20. [完全版] Windows安装与配置Git cz (commitizen)

热门文章

  1. 英国工党:愿与首相磋商妥协方案以达成脱欧协议
  2. 如何查看github趋势榜
  3. vb调用本地html,在VB中调用HTMLHELP文件VB -电脑资料
  4. 数据校验码(奇偶校验,海明校验,循环冗余校验)内容总结及个人经验分享
  5. 跟我学UDS(ISO14229) ———— 0x3E(TesterPresent)
  6. 二、C++ complier works 编译器如何工作工作
  7. Android实现的写字板(绘画板)
  8. exp4恶意代码分析实验报告-20202127
  9. Linux扩大原有磁盘以增大LVM空间【扩容partion分区方式】
  10. 如何有效激励经销商(上)