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

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

效果如上

相关推荐
青 春 记 忆5 小时前
零基础入门Python11|Git实战:为任务管理器建立版本历史
开发语言·git·vscode·python·python3.11
Python私教5 小时前
多个项目怎么安全合并?先适配,再切换
后端·python·架构
北斗落凡尘8 小时前
LangGraph 入门实战(12)--使用MCP
后端·python·langchain
jdksjw8 小时前
同步与异步、阻塞与非阻塞、多线程、协程超详细讲解(Python并发编程从入门到精通)
开发语言·python
Mike_Zhang8 小时前
使用python统计FreeSWITCH呼叫并发
python·freeswitch
SL-staff9 小时前
技术实践:HR如何用JVS-Logic可视化编排实现考勤数据同步(含节点配置与异常处理)
开发语言·python·低代码·钉钉·可视化编排·jvs-logic·hr技术
zzzzzz31010 小时前
AI 助手最危险的不是报错,而是“看起来成功”:我给工作流加了四道保险
人工智能·python
用户83562907805111 小时前
如何使用 Python 将 PowerPoint 转换为 PDF 文档
后端·python
菜冻鱼11 小时前
Python-pytorch-高级技巧
开发语言·人工智能·pytorch·python·深度学习·神经网络·聚类
lpfasd12311 小时前
python webview打包版卡死、开发版正常
开发语言·python