青岛网站平台开发网站seo好学吗
青岛网站平台开发,网站seo好学吗,wordpress 主题 恢复,技能培训班有哪些课程本文章中所有内容仅供学习交流#xff0c;抓包内容、敏感网址、数据接口均已做脱敏处理#xff0c;严禁用于商业用途和非法用途#xff0c;否则由此产生的一切后果均与作者无关#xff0c;若有侵权#xff0c;请联系我立即删除#xff01; 相信各位程序员大佬们也干过一些…本文章中所有内容仅供学习交流抓包内容、敏感网址、数据接口均已做脱敏处理严禁用于商业用途和非法用途否则由此产生的一切后果均与作者无关若有侵权请联系我立即删除相信各位程序员大佬们也干过一些杂活大动干戈地走协议爬虫肯定是另外的价钱这时候搞搞自动化采集也是挺香的下面以DrissionPage为例介绍一下自动化采集的搞法。1. DrissionPage介绍核心特点双模式切换它既能像 Selenium 一样操控 Chromium 内核浏览器实现所见即所得也能像 Requests 一样收发数据包且两者能共用 Session实现“无缝衔接”。无需 WebDriver这是它最大的优势之一。它不依赖chromedriver等驱动而是通过直接操作浏览器端口进行控制避开了 Selenium 常见的各种反爬特征且运行速度更快。语法简洁优雅相比 Selenium 繁琐的定位方式DrissionPage 提供了极其简便的语法如page(text:登录)即可定位按钮大幅减少了代码量。强大的内置功能原生支持跨 iframe 查找元素、自动等待、处理 Shadow-root、以及高效的下载工具等。学习链接https://space.bilibili.com/205260002. 应用示例示例urlbase64aHR0cHM6Ly9kZXRhaWwudG1hbGwuY29tL2l0ZW0uaHRtP2lkPTgzODc5NzQ5Njc2Ng这是一个某宝详情页链接现在想要获取详情页的评论数据1. 首先用DrissionPage创建一个浏览器实例from DrissionPage import ChromiumPage page ChromiumPage()2. 直接用这个浏览器实例打开我们要获取数据的页面page.get(实例链接)这时候就会驱动浏览器打开这个网址而且不会像传统的自动化程序一样浏览器上面还标识了一个正在被自动化程序驱动。Selenium (WebDriver 模式)它依赖于各个浏览器厂商提供的驱动程序如chromedriver.exe。这个驱动程序在启动浏览器时会强制注入特定的 JavaScript 变量如navigator.webdriver true。DrissionPage (CDP 模式)它直接通过Chrome DevTools Protocol (CDP)与浏览器内核进行通信。这本质上是浏览器“调试模式”的一种延伸就像你按 F12 打开开发者工具一样浏览器认为这是正常的管理行为而不是“被外部驱动”。3. 第三步只用分析一下我们采集数据的接口是哪个然后传递给listen对象监听起来到请求被触发接口数据就会被获取到。例如我们要获取的数据在这个接口中就只需要把包含mtop.taobao.rate.detaillist.get内容的接口全部监听起来基本上就能获取到数据4. 代码示例 创建浏览器实例 用浏览器实例打开需要采集数据的网址 def monitor_pagination(max_pages5, scroll_delay2): 监控分页数据 current_page 1 while current_page max_pages: print(f开始监听第 {current_page} 页数据...) # 【必须先启动监听再执行触发动作】监听到的请求才能被捕获 page.listen.start(mtop.taobao.rate.detaillist.get) if current_page 1: # 先向下滚动让“查看全部评价”按钮进入视口在页面下方 page.scroll.down(800) time.sleep(scroll_delay) view_all_btn page.ele(xpath://div[classShowButton--fMu7HZNs and contains(text(), 查看全部评价)], timeout5) if view_all_btn: view_all_btn.click() time.sleep(scroll_delay) else: # 1. 获取当前视口浏览器窗口内部的宽高 v_width, v_height page.rect.viewport_size # 2. 定义左下角的坐标点 # 这里的 0.2 表示左侧 20% 处0.8 表示上方起 80% 处即靠近底部 target_x v_width * 0.2 target_y v_height * 0.8 # 3. 执行动作链移动鼠标 - 停留 - 滚动 # 注意move_to 传入坐标元组时是相对于视口左上角的绝对位置 page.actions.move_to((target_x, target_y)) time.sleep(0.5) # 关键停留半秒让页面感知到鼠标悬停 page.actions.scroll(delta_x0, delta_y6000) time.sleep(scroll_delay) time.sleep(scroll_delay) api_response page.listen.wait(timeout10) if api_response: resp api_response.response response_body resp.body # 响应体评论在 HTML 中需后续解析 all_responses.append(response_body) print(f第 {current_page} 页数据监听到:) print(f响应状态: {resp.status}) print(f数据长度: {len(str(response_body))}) else: print(f第 {current_page} 页未监听到数据) if current_page 1: break time.sleep(scroll_delay) current_page 1 return all_responses针对某宝等具有高级反爬机制的平台传统的自动化脚本滚动如 JS 注入容易被识别。此时我们可以利用 DrissionPage 模拟真实的物理滚轮操作通过设定随机的滚动频率和位移以‘硬编码’模拟人工操作的方式规避检测。其实自动化采集的化还是不太稳定但是如果只是需要数据的需求的化用自动化采集无疑是性价比最高的毕竟搞协议是另外的价钱嘛