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

前言:本次分享目的为研究 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即可

效果如上

相关推荐
步辞3 小时前
Go语言怎么用channel做信号通知_Go语言channel信号模式教程【完整】
jvm·数据库·python
Ulyanov3 小时前
《PySide6 GUI开发指南:QML核心与实践》 第一篇:GUI新纪元——QML与PySide6生态系统全景
开发语言·python·qt·qml·雷达电子对抗
曲幽3 小时前
FastAPI + SQLAlchemy 2.0 通用CRUD操作手册 —— 从同步到异步,一次讲透
python·fastapi·web·async·sqlalchemy·session·crud·sync·with
Dxy12393102163 小时前
Python 如何使用 XPath 定位元素:从入门到实战
python
用户8356290780513 小时前
Python 设置 PowerPoint 文档属性与页面参数
后端·python
weixin_424999363 小时前
mysql行级锁失效的原因排查_检查查询条件与执行计划
jvm·数据库·python
yaoxin5211233 小时前
389. Java IO API - 获取文件名
java·开发语言·python
Polar__Star3 小时前
uni-app怎么实现App端一键换肤 uni-app全局样式动态切换【实战】
jvm·数据库·python
卓豪终端管理3 小时前
两种终端数据清除策略的技术笔记:企业定向清除 vs 完全擦除
运维·自动化