链家二手房数据自动化点选验证码

前言:本次分享目的为研究 DrissionPage的相关使用以及xpath/css语法的应用及其点选验证码的机制,切勿作为商业目的,恶意采集或者网站,自觉遵守相关法律法规

网址:

aHR0cHM6Ly9jcy5saWFuamlhLmNvbS9lcnNob3VmYW5nL3BnMS8=


点击下一页后弹出人机验证

点击开始验证后 会有三种类型点选验证码

点字、点图、按语序

1、环境配置

pip install DrissionPage//安装模块

官方文档:https://www.drissionpage.cn/browser_control/intro

新建一个临时py文件,然后填入个人电脑里面的浏览器可执行文件路径,然后运行即可

python 复制代码
dp = ChromiumPage()
path = r'D:\chrome\chrome.exe'# 按需修改为实际;浏览器路径
ChromiumOptions.set_browser_path(path).save()

保存后,以后都不需要,配置路径了

2. 访问网站
python 复制代码
from DrissionPage import ChromiumPage, ChromiumOptions
dp = ChromiumPage()
dp.get('https://cs.lianjia.com/ershoufang/pg1/')# 按需修改
3. 获取数据

元素定位:(静态网页)

监听数据:(f动态网页/专门的数据接口)

  • 通过元素面板中对应标签

把每个房源数据当作整体->对应的元素标签

每个房源数据内容都在li标签中存在

利用CSS/Xpath匹配表数据标签

我这里用的是css

python 复制代码
dp.eles('css:')# 元素定位使用css选择器匹配多个标签

可以查看右侧css选择器语法,但不通用

4. 保存数据
python 复制代码
# 导入CSV模块
import csv
# 创建文件对象
f=open('data.csv',mode='w',encoding='utf-8',newline='''
# 字典写入的方法fieldnames->字段名,使用dit中键
csv_writer=csv.DictWriter(f, fieldnames=[])
# 写入表头
csv_writer.writeheader()
# 数据
dit={}
# 写入数据
csv_writer.writerow(dit)
5.翻页处理

先触发人机验证 然后载触发点选

自动化点选识别
  1. 判断页面是否有验证码

有验证码的链接有特点的

python 复制代码
url = dp.url
if'captcha' in url:
     # 验证码识别
     print('有验证码')
else:
     # 正常采集数据
     get_content()
  1. 出现验证码后

我个人用的是超级鹰,用其他打码平台效果差不多,原理就是弹出人机验证后,通过css定位自动点击先过人机验证码

python 复制代码
 dp.ele('text=点击按钮开始验证').click()
        time.sleep(4)

等待几秒后弹出点选验证

python 复制代码
 # 定位验证码图片标签
        img = dp.ele('css:.geetest_box')
        # 截取验证码图片
        img.get_screenshot('bg.png')

截取图片上传打码平台,计算坐标

python 复制代码
def get_codex():
    chaojiying = Chaojiying_Client('用户账号', '用户密码', '软件ID')
    im = open('bg.png', 'rb').read()
    print(chaojiying.PostPic(im, 9103))
    x_y = chaojiying.PostPic(im, 9103)['pic_str']# 9103验证码类型
    return x_y.split('|')

利用打码平台进行验证码识别,获取坐标

通过验证后,在返回接口中获取uuid列表,提取uuid即可

效果如上

相关推荐
2601_962284501 小时前
利用Python语言实现实验室自动化
python·自动化·数据采集·labview·科学计算
隐擎fox2 小时前
网络传输中的 DNS 泄漏成因剖析与 Python 自动化检测排查实战
python·网络协议·自动化·dns·ip/tcp
2601_962296282 小时前
python初学者怎么选IDE
ide·python·开发环境·初学者·工具选择
青少儿编程课堂3 小时前
威佐夫博弈(双堆取子游戏)解析
c++·python·算法·bfs·信息学竞赛
hhzz4 小时前
【OpenCV 入门到精通 03】图像入门:读取、显示、保存完全指南
人工智能·python·opencv·计算机视觉
金融小师妹5 小时前
AI趋势识别:黄仁勋宣布“AGI时代”到来,Astra能力跃迁背后的AI安全边界
大数据·python·深度学习·重构·逻辑回归
2501_941875287 小时前
从配置中心到动态管理的互联网工程语法演进与多语言实践分享
开发语言·python
hfywmsj8 小时前
广州餐饮铺位招租决策模型:多因子选址系统设计
开发语言·人工智能·python·广州餐饮铺位招租
智塑未来10 小时前
自动化立体库工业无线通信:AGV、AMR、RGV、穿梭车、无人叉车、堆垛机全覆盖
运维·自动化
泡海椒11 小时前
内置SPI函数库详解:JQuick-Java Builtin工具类实战用法
java·开发语言·python