【python 百度指数抓取】python 模拟登陆百度指数,图像识别百度指数

2024-09-07 07:32

本文主要是介绍【python 百度指数抓取】python 模拟登陆百度指数,图像识别百度指数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、算法思想
目的奔着去抓取百度指数的搜索指数,搜索指数的爬虫不像是其他爬虫,难度系数很高,分析之后发现是图片,坑爹的狠,想了下,由于之前做过身份证号码识别,验证码识别之类,豁然开朗,不就是图像识别麽,图像识别我不怕你,于是就有了思路,果然有异曲同工之妙,最后成功被我攻破了,大致思路如下:

1、首先得模拟登陆百度账号(用selenium+PhantomJS模拟登陆百度,获取cookie)
2、由于有该死的验证码,因此我们要绕过验证码,保存cookie模拟登陆(绕过万恶的验证码)
3、然后模拟登陆以后,程序截取屏幕保存到本地图片。(屏幕截屏)
4、读取本地图片。(读取图片)
5、找到搜索指数所在区域,裁剪图片。(裁剪图片)
6、下面就是进行图像识别,或者说验证码识别了。(去灰度化,二值化,图像识别)

二、截屏效果和识别效果
这里写图片描述

这里写图片描述

这里写图片描述
这里写图片描述

三、步骤详解

程序1:selenium 模拟登陆百度保存cookie到本地

#-*-coding:utf-8-*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from selenium import webdriver
import time
import pickle
driver=webdriver.PhantomJS(executable_path='D:\\Program Files\\Python27\\Scripts\\phantomjs.exe')driver.get('http://index.baidu.com/?tpl=trend&word=%D0%DB%B0%B2%D0%C2%C7%F8')
e1 = driver.find_element_by_id("TANGRAM_12__userName")
e1.send_keys("百度账号")
e2 = driver.find_element_by_id("TANGRAM_12__password")
e2.send_keys("百度密码")
e3 = driver.find_element_by_id("TANGRAM_12__submit")
e3.click()
cookies = driver.get_cookies()
time.sleep(6)pickle.dump(cookies, open("C:/cookies/cookies.pkl","wb"))

程序2:利用cookie模拟登陆百度,截屏,图像识别

#-*-coding:utf-8-*-
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from selenium import webdriver
import time
import pickle
driver=webdriver.PhantomJS(executable_path='D:\\Program Files\\Python27\\Scripts\\phantomjs.exe')
from PIL import Image
import pytesseract####################################第二步:利用cookie登录#####################################
driver.get("http://index.baidu.com")
cookies = pickle.load(open("C:/cookies/cookies.pkl", "rb"))
for cookie in cookies:driver.add_cookie(cookie)driver.get("http://index.baidu.com/?tpl=trend&word=%D0%DB%B0%B2%D0%C2%C7%F8")
time.sleep(3)driver.get_screenshot_as_file('E:/ID/5.png')
print("截屏结束.................")
driver.quit()
###########二值化算法
def binarizing(img,threshold):pixdata = img.load()w, h = img.sizefor y in range(h):for x in range(w):if pixdata[x, y] < threshold:pixdata[x, y] = 0else:pixdata[x, y] = 255return imgimg1=Image.open("E:/ID/5.png")
w,h=img1.size
# region = (220*3,320*3,420*3,380*3)//两个一起
##将图片放大3倍
out=img1.resize((w*3,h*3),Image.ANTIALIAS)
region1 = (220*3,320*3,320*3,380*3)
region2 = (320*3,320*3,420*3,380*3)
cropImg1 = out.crop(region1)
cropImg2 = out.crop(region2)
img1= cropImg1.convert('L')
img2= cropImg2.convert('L')
img1=binarizing(img1,200)
img2=binarizing(img2,200)
code1 = pytesseract.image_to_string(img1)
code2 = pytesseract.image_to_string(img2)print "整体搜索指数:" + str(code1).replace(".","").replace(" ",'')
print "移动搜索指数:" + str(code2).replace(".","").replace(" ",'')
# img1.show()
# img2.show()

这篇关于【python 百度指数抓取】python 模拟登陆百度指数,图像识别百度指数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1144454

相关文章

Python如何使用__slots__实现节省内存和性能优化

《Python如何使用__slots__实现节省内存和性能优化》你有想过,一个小小的__slots__能让你的Python类内存消耗直接减半吗,没错,今天咱们要聊的就是这个让人眼前一亮的技巧,感兴趣的... 目录背景:内存吃得满满的类__slots__:你的内存管理小助手举个大概的例子:看看效果如何?1.

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Python实现无痛修改第三方库源码的方法详解

《Python实现无痛修改第三方库源码的方法详解》很多时候,我们下载的第三方库是不会有需求不满足的情况,但也有极少的情况,第三方库没有兼顾到需求,本文将介绍几个修改源码的操作,大家可以根据需求进行选择... 目录需求不符合模拟示例 1. 修改源文件2. 继承修改3. 猴子补丁4. 追踪局部变量需求不符合很

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

Python下载Pandas包的步骤

《Python下载Pandas包的步骤》:本文主要介绍Python下载Pandas包的步骤,在python中安装pandas库,我采取的方法是用PIP的方法在Python目标位置进行安装,本文给大... 目录安装步骤1、首先找到我们安装python的目录2、使用命令行到Python安装目录下3、我们回到Py

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid