学习目标:

python学习二十四 —简单数据抓取四


学习内容:

1、利用超级鹰的ocr识别图片验证码模拟登录超级鹰网站
2、利用百度云的ocr识别自如租房网的价格图片,获取到自如网的价格数据


1、利用超级鹰的图片识别图片验证码模拟登录超级鹰网站

import requests
from hashlib import md5
import requests
import re
import pymysql
from lxml import etreeclass Chaojiying_Client(object):def __init__(self, username, password, soft_id):self.username = usernameself.password = md5(password.encode('utf8')).hexdigest()self.soft_id = soft_idself.base_params = {'user': self.username,'pass2': self.password,'softid': self.soft_id,}self.headers = {'Connection': 'Keep-Alive','User-Agent': 'Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)',}def PostPic(self, im, codetype):"""im: 图片字节codetype: 题目类型 参考 http://www.chaojiying.com/price.html"""params = {'codetype': codetype,}params.update(self.base_params)files = {'userfile': ('ccc.jpg', im)}r = requests.post('http://upload.chaojiying.net/Upload/Processing.php', data=params, files=files, headers=self.headers)return r.json()def ReportError(self, im_id):"""im_id:报错题目的图片ID"""params = {'id': im_id,}params.update(self.base_params)r = requests.post('http://upload.chaojiying.net/Upload/ReportError.php', data=params, headers=self.headers)return r.json()if __name__ == '__main__':# 需要的header头部headers = {'authority': 'www.chaojiying.com','referer': 'https://www.chaojiying.com/','origin': 'https://www.chaojiying.com','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'}# 用session记录cookie的状态,因为此网站的cookie可变,注意后面对该网站的所有请求均是以h开头   h = requests.Session()# 首先获取登录界面的图片验证码source = h.get('https://www.chaojiying.com/user/login/', headers=headers).textimg = 'https://www.chaojiying.com/'+etree.HTML(source).xpath('/html/body/div[3]/div/div[3]/div[1]/form/div/img/@src')[0]pic = h.get(img, headers=headers).content# 并将图片保存 到本地op = open('F:\pycharm\lx\chaojiying\/a.jpg', 'wb')op.write(pic)op.close()# 超级鹰的图片识别区chaojiying = Chaojiying_Client('17158232693', 'yytax245.', '912200')  # 用户中心>>软件ID 生成一个替换 96001# 取出本地的图片,并读取im = open('F:\pycharm\lx\chaojiying\/a.jpg', 'rb').read()  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//# 1902是超级鹰的价格模型,针对不同类型的图片验证码的价格编号pic_str = chaojiying.PostPic(im, 1902)['pic_str']print(pic_str)# data是用户登录需要的数据data = {'user': '超级鹰用户名','pass': '超级鹰密码','imgtxt': pic_str,'act': '1',}# post登录连接,带上header头和用户需要的data数据a = h.post('https://www.chaojiying.com/user/login/', headers=headers, data=data).text# get获取到登录成功页面的代码index = h.get('https://www.chaojiying.com/user/', headers=headers).textprint(index)

2、利用百度云的ocr识别自如租房网的价格图片,获取到自如网的价格数据

from lxml import etree
import requests
import re
from decimal import Decimal
import base64headers = {'User-Agent': 'Mozilla/5.0(Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36'
}# 获取到自如租房的房间页面的代码
source =requests.get('http://tj.ziroom.com/x/754539414.html', headers=headers).text
print(source)
# 获取到该房间的价格每个数字的位置px,以及所对应数字串的序列(每次请求该数字序列在变化)图片
url = etree.HTML(source).xpath('/html/body/section/aside/div[1]/i/@style')# 创建一个列表存放数字的位置px
px = []
# 创建一个字符串存放数字串的序列图片
pic = ''# 循环取出价格中的每个数字位置以及序列图片
for i in url:# 用正则匹配出数字位置信息和序列图片的链接demo = re.compile('background-position:-(.*?)px;background-image: url\((.*?)\);')lists = demo.findall(i)# 将数字位置信息存放到px列表中px.append(lists[0][0])# 拼凑出数字序列图片的urlpic = 'http:'+ lists[0][1]
print(px, pic)# 创建一个字典用来0到9的十个数字分别对应一个位置信息
dicts = {}
# 其中为了防止python计算小数时不够精确,所以用了Decimal包用来精确计算数字的位置小数
n = Decimal('0')for i in range(10):if n != 0:nn = float(n)else:nn=0
# 创建一个0到9对应31.24倍数的一个字典dicts[str(nn)]=in += Decimal('31.24')
print(dicts)# 按自如网中给出价格的位置信息取出本地字典对应数字即第几个数字
index = [dicts[x] for x in px]
print(index)# 将数字序列图片存进到本地
pic_source = requests.get(pic, headers=headers).content
op = open('F:\pycharm\lx\ziru\/' + pic.split('/')[-1], 'wb')
op.write(pic_source)
op.close()'''
网络图片文字识别(含位置版)
'''request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/webimage_loc"
# 二进制方式打开图片文件
f = open('F:\pycharm\lx\ziru\\'+pic.split('/')[-1], 'rb')
img = base64.b64encode(f.read())# client_id 为官网获取的AK, client_secret 为官网获取的SK
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=百度智能云的API Key码&client_secret=百度智能云的Secret Key码'
response = requests.get(host)
if response:print(response.json())params = {"image":img}
access_token = response.json()['access_token']
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:print(response.json())# 按格式取出数字序列
words = response.json()['words_result'][0]['words']
print(words)
# 按index中元素的值,取出words中相应位置的数字,并拼在一起
price = ''.join([words[x] for x in index])
print(price)

python—简单数据抓取四(利用超级鹰的ocr识别图片验证码模拟登录超级鹰网站、利用百度云的ocr识别自如租房网价格图片获取到自如网的价格)相关推荐

  1. python—简单数据抓取七(采取蘑菇API代理设置scrapy的代理IP池并利用redis形成队列依次使用,利用ip池访问网页并将scrapy爬取转移到items的数据存入到数据库)

    学习目标: Python学习二十七-简单数据抓取七 学习内容: 1.采取蘑菇API代理设置scrapy的代理IP池并利用redis形成队列依次使用 2.利用ip池访问网页并将scrapy爬取转移到it ...

  2. python—简单数据抓取三(简单IP地址代理、利用蘑菇代理实现IP地址代理刷新本地ip地址、利用蘑菇代理实现IP地址代理抓取安居客信息并实现多线程)

    学习目标: python学习二十三 -数据抓取三. 学习内容: 1.简单IP地址代理 2.利用蘑菇代理实现IP地址代理刷新本地ip地址 3.利用蘑菇代理实现IP地址代理抓取安居客信息并实现多线程 1. ...

  3. python 爬虫 数据抓取的三种方式

    python 爬虫   数据抓取的三种方式 常用抽取网页数据的方式有三种:正则表达式.Beautiful Soup.lxml 1.正则表达式 正则表达式有个很大的缺点是难以构造.可读性差.不易适用未来 ...

  4. python table数据抓取_Python爬虫:数据抓取工具及类库详解

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: ncepu_Chen PS:如有需要Python学习资料的小伙伴可以 ...

  5. python壁纸数据抓取_python爬虫系列之 xpath实战:批量下载壁纸

    一.前言 在开始写爬虫之前,我们先了解一下爬虫 首先,我们需要知道爬虫是什么,这里直接引用百度百科的定义网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照 ...

  6. python简单实现抓取英雄联盟皮肤原画:老玩家都哭了!

    写在前面: 自学py已经快两个多月了吧,作为新手,就是敢于尝试,之前有看到有人抓取王者荣耀皮肤的,但是作为一个联盟老玩家,还是想搞一个抓取联盟皮肤的,下面分享一下我自己的学习经过,如果有错误或者建议, ...

  7. 使用python简单的抓取网络小说

    在读完kcl的语言班后,终于有了大块的空闲时间,想着写一点程序练练手,就花费一点时间写了一个python的小爬虫,很简单,上代码. #!/usr/bin/env python3 # -*- codin ...

  8. Python简单的抓取静态网页内容

    import requests from bs4 import BeautifulSoup res = requests.get('http://news.sina.com.cn/china/')#获 ...

  9. python壁纸数据抓取_python爬虫多线程实战:爬取美桌1080p壁纸图片

    本人纯手工码字哦,请耐心看完,有信心可以带你完整学会这个实战案例 一.需求分析: 1.下载 http://www.win4000.com/wallpaper.html 下指定分类 指定尺寸 的图片 2 ...

最新文章

  1. 关于报错ImportError: cannot import name ‘AbstractKeyedTuple‘ from ‘sqlalchemy.util._collections‘的解决
  2. C++Builder中ListView控件用法和示例总结整理
  3. 5.2jquery案例2
  4. Centos7升级最新git
  5. 开发小计之判断输入字符串类型(正则表达式)
  6. Flask Jinja2模板
  7. asp连接mysql未发现数据源名称_asp.net – 连接到MySQL导致错误“未找到数据源名称且未指定默认驱动程序”...
  8. PHP获取git提交信意_代码提交规范检查与修复 php_codesniffer + composer-git-hooks
  9. 文件夹内失效 .htaccess_辽宁本溪内支撑盲管实业
  10. 项目总结报告(联东U谷)
  11. 生成PDF并上传到图片服务器
  12. datastore java_Java Datastore.find方法代码示例
  13. PS图片上传图片 同时生成微缩图
  14. Docker可视化管理工具shipyard
  15. [源码解析] 模型并行分布式训练 Megatron (4) --- 如何设置各种并行
  16. Fabric 1.0源代码分析(22)Ledger #blkstorage(block文件存储)
  17. php file_put_contents 根目录权限,关于php:file_put_contents权限被拒绝
  18. ORA-01031: insufficient privileges解决办法
  19. 使用自定义的评价函数优化高NA分束器
  20. python用input输入字典_输入字典python_python输入字典_python用input输入字典 - 云+社区 - 腾讯云...

热门文章

  1. 【笔试面试记录】测绘地理信息遥感类面试相关问题记录
  2. 如何在门户网站发布软文?
  3. [zz] 音频开源代码中重采样算法的评估与选择
  4. [转]计算机视觉和模式识别的code
  5. WPF/Silverlight HierarchicalDataTemplate 模版的使用(转)
  6. 将safari设置iPhone模拟器
  7. {}如何利用邮件进行推广
  8. 相见恨晚的68句话——每句话可以品半辈子,你有同感吗?
  9. Unity2d 键盘操作的实现
  10. 2020年北京林业大学计算机科学与技术 考研复试总结+专业课复习重点