当前位置: 首页 > news >正文

wordpress oss关键词优化是怎么弄的

wordpress oss,关键词优化是怎么弄的,辽宁省建设厅网站升级何时结束,广州哪家做网站价格好【网络爬虫篇】更多优秀文章借鉴: 1. 使用Selenium实现黑马头条滑块自动登录 2. 使用多线程采集爬取豆瓣top250电影榜 3. 使用Scrapy爬取去哪儿网游记数据 4. 数据采集技术综合项目实战1:国家水稻网数据采集与分析 5. 数据采集技术综合项目实战2&#x…

  【网络爬虫篇】更多优秀文章借鉴:

1. 使用Selenium实现黑马头条滑块自动登录

2. 使用多线程采集爬取豆瓣top250电影榜

3. 使用Scrapy爬取去哪儿网游记数据 

4. 数据采集技术综合项目实战1:国家水稻网数据采集与分析

5. 数据采集技术综合项目实战2:某东苹果15数据采集与分析

6. 数据采集技术综合案例实战3:b站弹幕采集与分析

7. 逆向实战—京东:滑块验证码(逆向登录)

导航小助手

项目介绍及需求:

实现步骤

结果展示


项目介绍及需求:

本项目主要是针对“逆向实战—京东:滑块验证码(逆向登录)”。1.通过Selenium与selector、Xpath交互自动化地寻找滑块拼接所需要的元素。2.针对特定元素使用pyautogui模拟鼠标的人为操作。3.当滑块验证码登录成功后,将用户的成功登录的cookie保存到本地的txt文件;在用户爬取京东相关特定的数据时,只需要将记载着用户的cookie的txt文件进行读入,即可避免浏览器的用户验证行为。

实现步骤

1. 首先导入相关库,解决我们的相关需求

import base64 # 用于处理 Base64 编码的图像。
import cv2 # OpenCV,用于图像处理和模式识别,这里主要用于识别滑块验证码的位置。
from selenium import webdriver # 从selenium库中引入webdriver模块,用于控制浏览器的自动化操作。
from selenium.webdriver.common.by import By # 引入selenium中的By类,它提供了查找网页元素的不同策略,如通过CSS选择器、ID、类名等。
from selenium.webdriver.support.ui import WebDriverWait # 用于等待页面上的元素出现,这在处理动态网页时非常重要。
from selenium.webdriver.support import expected_conditions as EC # 用于检查元素是否出现在DOM中。
import time # 降低访问频率
import pyautogui # 用于模拟鼠标和键盘操作,这里用于处理滑块验证码的拖动操作。

2.在自定义的login()函数中,使用Selenium的内置参数元素的selector定位滑块验证码的相关元素

driver = webdriver.Firefox()
driver.get('https://www.jd.com/')
# 最大化浏览器窗口,确保自动化操作不会因为窗口大小问题而失败。
driver.maximize_window()
# driver.execute_script('document.body.style.zoom="0.8"')
# 在京东主页面找到登录按钮,进入登录页面
driver.find_element(by=By.CSS_SELECTOR, value='#ttbar-login > a.link-login > span.style-red').click()# 输入自己的手机号码
driver.find_element(by=By.CSS_SELECTOR, value='#loginname').send_keys("xxx")
# 输入自己的密码
driver.find_element(by=By.CSS_SELECTOR, value='#nloginpwd').send_keys("xxx")# 定位并点击确认按钮
driver.find_element(by=By.CSS_SELECTOR, value='#formlogin > div.item.item-fore5').click()# 休息3秒,等待滑块验证码的加载
time.sleep(3)

3.在自定义的login()函数中,使用一个死循环,跳出循环的条件为用户滑块验证成功,否则不断重复定位图片、写入图片、查找距离操作。

# 设置循环,当滑块验证失败时,不断重新获取滑块验证码并再次进行滑动验证while True:try:big = driver.find_element(by=By.XPATH, value='//div[@class="JDJRV-bigimg"]/img')small = driver.find_element(by=By.XPATH, value='//div[@class="JDJRV-smallimg"]/img')# 使用get_attribute方法获取背景图像的src属性值,并去除前22个字符,因为它们通常包含data: image / png;base64, 这样的前缀。big = big.get_attribute('src')[22:]small = small.get_attribute('src')[22:]# base64.b64decode(big):这个函数用于解码Base64编码的字符串。Base64是一种用于将二进制数据转换为可打印字符的编码方式,with open('./pictures/slidepicture.png', mode='wb') as f:f.write(base64.b64decode(big))with open('./pictures/background.png', mode='wb') as f:f.write(base64.b64decode(small))# 调用FindPic拖动滑块拼接函数,识别滑块的位置。res = FindPic()

4.在自定义的滑块拼接距离FindPic()函数中,使用OpenCV中的相关图像匹配方法,匹配滑块与滑块背景图片的缺口关系,找到一个从滑块左上端到滑块背景最大值和最小值的距离,这里我取的是最小值。

def FindPic(target='./pictures/slidepicture.png', template='./pictures/background.png'):# 使用cv2.imread方法读取目标图像,并将其转换为灰度图像。# 灰度模式意味着图像只包含亮度信息,没有颜色信息,因此每个像素点只有一个灰度值。target_rgb = cv2.imread(target, 0)print(target_rgb.shape)template_rgb = cv2.imread(template,0)'''执行模板匹配后,返回的结果是一个二维浮点数组,该数组的大小与输入的目标图像相同,但包含的是匹配系数而不是图像像素值。通过分析这个结果图,可以找到模板图像在目标图像中的最佳匹配位置。'''# 使用cv2.matchTemplate方法在目标图像中搜索模板图像,使用cv2.TM_CCOEFF_NORMED方法进行匹配。res = cv2.matchTemplate(target_rgb, template_rgb, cv2.TM_CCOEFF_NORMED)# 在给定的数组或图像res中找到最小值和最大值及其位置。value = cv2.minMaxLoc(res)return value[2][0]

5. 在自定义的login()函数的while循环中计算滑块应该滑动的距离。由于计算滑块需要拖动的距离,由于图片的真实宽度为360,而展示的图片宽度为242,且在我的电脑中屏幕是以125%的显示,125/100=1.25。所以真实的滑动距离应该为res = res * 242 * 1.25 // 360;定位小滑块元素。

2f4059e7f6af4f2cb728e0df6511f7a7.png

# 计算滑块需要拖动的距离,由于图片的真实宽度为360,而展示的图片宽度为242,且res = res * 242 * 1.25 // 360print("本次应该滑动滑块的距离为:", res)
# 使用WebDriverWait和presence_of_element_located等待滑块元素出现,并将其保存在slider变量中。slider = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CSS_SELECTOR, '#JDJRV-wrap-loginsubmit > div > div > div > div.JDJRV-img-panel.JDJRV-click-bind-suspend > div.JDJRV-img-wrap > div.JDJRV-smallimg > img')))

6.当然,有的小伙伴此时会想为什么不用Selenium自带的模拟滑动操作,在经过实验后发现通过Selenium滑动滑块操作是不被京东所认可的,结果小伙伴们可以自己实验。

'''使用Selenium自带的模拟拉动滑块操作1. action = ActionChains(driver)2. action.click_and_hold(slider).move_by_offset(res,0).release().perform()'''

7.获取小滑块在浏览器上的在xy轴的坐标位置,并使用pyautogui的相关操作拉动滑块;而这里有个问题,即认为需要的滑块位置与实际获得的滑块位置。

92e93bdb66a04c029b5ebb1a01cc62f0.png

 获取小滑块在网页上的位置lo = slider.location# 计算鼠标需要移动到的x坐标位置,这里可能涉及到滑块和网页元素的比例和位置关系。x = int(lo.get('x')*1.25) + 20 # 小滑块在浏览器上的 x 距离y = int(lo.get('y')*1.25) + 125 # 小滑块在浏览器上的 y 距离

 8. 利用pyautogui对小滑块进行滑动“漂移”操作,登录成功即将用户cookie写入txt文件。

            '''# 使小滑块进行飘移操作1. duration=0.2 指定了鼠标移动到目标位置所需的时间,单位是秒。2. 先故意使得小滑块拉过头,再慢慢恢复计算出来的距离'''pyautogui.moveTo(x+res+15, y+6,duration = 0.2)pyautogui.moveTo(x+res-10, y-3,duration = 0.3)pyautogui.moveTo(x+res, y, duration = 0.3)pyautogui.mouseUp()# 未验证成功,休息5秒,等待下一次模拟登录time.sleep(5)# 若登录成功,则将本次登录成功的用户信息记录于txt文件中except:cookies = driver.get_cookies()cookie_string = "; ".join(f"{cookie['name']}={cookie['value']}" for cookie in cookies)break

结果展示

由上图信息可见,用户自动化登录成功~

注意:若需要全部源代码,请在后台私信博主~

创作不易,请点个赞哦~

还有更多优秀作品在博主主页~

http://www.mmbaike.com/news/45767.html

相关文章:

  • 营销型网站建设试卷厦门seo报价
  • 三明市住房与城乡建设部网站外包网站有哪些
  • 做100个网站效果图网站优化靠谱seo
  • 招聘网站可以做劳务派遣吗交友网站有哪些
  • 个人网站制作源代码下载什么网站做推广比较好
  • 做面食视频网站aso应用商店优化
  • 大连百度首页优化网站推广seo
  • 网站建设公司找哪家营销型网站建设题库
  • 网站代运营合作协议无锡网站seo顾问
  • 建设全网营销型网站四川seo快速排名
  • wordpress 权限是一个类还是一个函数天天seo站长工具
  • wordpress网页设计价格设计seo竞争对手分析
  • 宁波seo资源seo优化师就业前景
  • 建网站得多少钱怎么找拉新推广平台
  • 网站建设 意见征集百度怎么注册公司网站
  • 曰本做爰l网站app推广代理去哪里找
  • 网站新闻详细页面设计搜索引擎排名优化包括哪些方面
  • 自建网站怎么做优化考研培训机构排名
  • 太原市做网站好的科技公司东莞网站建设推广技巧
  • 专门做爬虫的网站seo短视频发布页
  • 中国十大门户网站网站推广工具
  • 最新网站建设网络营销策划书案例
  • 高校网站站群建设公司关键词优化最好的方法
  • 深圳在哪些网站上面做推广可以免费打开网站的软件
  • 专业做pc+手机网站招商外包公司
  • wordpress 建站教程 下载百度首页关键词推广
  • 做网站 页面自适应seo搜索引擎优化教程
  • 网络空间 网站 域名怎么查找关键词排名
  • 如何做一名优秀的网站管理者宁波seo关键词优化制作
  • 微网站 无锡潍坊seo网络推广