日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬虫——动作链、xpath、打码平台使用

發(fā)布時間:2023/12/15 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫——动作链、xpath、打码平台使用 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

系列文章目錄

第一章 爬蟲——爬蟲初識、requests模塊

第二章 代理搭建、爬取視頻網(wǎng)站、爬取新聞、BeautifulSoup4介紹、bs4 遍歷文檔樹、bs4搜索文檔樹、bs4使用選擇器

第三章 selenium基本使用、無界面瀏覽器、selenium的其他用法、selenium的cookie、爬蟲案例

第四章 動作鏈、xpath、打碼平臺使用


文章目錄

  • 系列文章目錄
  • 一、動作鏈
  • 二、xpath
  • 三、打碼平臺使用


一、動作鏈

模擬按住鼠標拖動的效果,或者是在某個標簽上的某個位置點擊的效果,主要用來做驗證碼的破解(滑動驗證碼)

動作鏈事件表:

函數(shù)作用
click(on_element=None)單擊鼠標左鍵
click_and_hold(on_element=None)點擊鼠標左鍵,不松開
context_click(on_element=None)點擊鼠標右鍵
double_click(on_element=None)雙擊鼠標左鍵
drag_and_drop(source, target)拖拽到某個元素然后松開
drag_and_drop_by_offset(source, xoffset, yoffset)拖拽到某個坐標然后松開
key_down(value, element=None)按下某個鍵盤上的鍵
key_up(value, element=None)松開某個鍵
move_by_offset(xoffset, yoffset)鼠標從當前位置移動到某個坐標
move_to_element(to_element)鼠標移動到某個元素
move_to_element_with_offset(to_element, xoffset, yoffset)移動到距某個元素(左上角坐標)多少距離的位置
perform()執(zhí)行鏈中的所有動作(一般所有動作排列好后才執(zhí)行)
release(on_element=None)在某個元素位置松開鼠標左鍵
send_keys(*keys_to_send)發(fā)送某個鍵到當前焦點的元素
send_keys_to_element(element, *keys_to_send)發(fā)送某個鍵到指定元素

動作鏈的使用:
1.先拿到動作鏈對象(也就是標簽)
2.對動作鏈對象設(shè)置動作事件(先設(shè)置的先執(zhí)行)
3.動作設(shè)置完畢使用perform執(zhí)行

# 動作鏈模塊 from selenium.webdriver import ActionChains

模擬滑動驗證碼

from selenium import webdriver from selenium.webdriver import ActionChains import time from selenium.webdriver.common.by import By driver = webdriver.Edge() driver.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable') driver.implicitly_wait(10) # 使用隱式等待driver.maximize_window()try:driver.switch_to.frame('iframeResult') ##切換到iframeResultsourse=driver.find_element(By.ID,'draggable')target=driver.find_element(By.ID,'droppable')#方式一:基于同一個動作鏈串行執(zhí)行# actions=ActionChains(driver) #拿到動作鏈對象# actions.drag_and_drop(sourse,target) #把動作放到動作鏈中,準備串行執(zhí)行actions=ActionChains(driver).click_and_hold(sourse) # 對動作鏈對象使用click_and_hold為拖住sourse標簽元素actions.drag_and_drop_by_offset(target,10,20) # drag_and_drop_by_offset為將actions對象拖到距離target對象的左側(cè)10px、高20px的位置actions.perform()time.sleep(10)finally:driver.close() from selenium import webdriver from selenium.webdriver import ActionChains import time from selenium.webdriver.common.by import By driver = webdriver.Edge() driver.get('http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable') driver.implicitly_wait(10) # 使用隱式等待driver.maximize_window()try:driver.switch_to.frame('iframeResult') ##切換到iframeResultsourse=driver.find_element(By.ID,'draggable')target=driver.find_element(By.ID,'droppable')#方式二:不同的動作鏈,每次移動的位移都不同ActionChains(driver).click_and_hold(sourse).perform()distance = target.location['x'] - sourse.location['x'] # 兩個控件之間的x軸的距離track=0while track < distance:ActionChains(driver).move_by_offset(xoffset=20,yoffset=0).perform()# 移動量為xoffsettrack+=20 # 此處只是控制循環(huán)條件ActionChains(driver).release().perform()time.sleep(10)finally:driver.close()

二、xpath

一般解析庫都會有子的的搜索標簽的方法,一般都會支持css和xpath
XPath 是一門在 XML 文檔中查找信息的語言

符號作用
標簽名找對應標簽名的標簽,如div、p、a等
/找當前節(jié)點下的標簽
//找當前節(jié)點子子孫孫下的標簽
.表示當前節(jié)點
. .表示上一層
@表示取屬性,如@id=‘xxx’、@href=‘www.baidu.com’

例如:

[@id="cnblogs_post_body"]/p[9]/strong 1.獲取id為cnblogs_post_body的對象 [@id="cnblogs_post_body"] 2.當前路徑下拿到第九個p標簽 /p[9] 3.當前節(jié)點下的strong標簽 /strong

三、打碼平臺使用

驗證碼的破解
簡單的數(shù)字字母組合可以使用圖像識別(python 現(xiàn)成模塊),成功率不高
使用第三方打碼平臺(破解驗證碼平臺),花錢,把驗證碼圖片給它,它給你識別完,返回給你

例如:
超級鷹

from selenium import webdriver from selenium.webdriver.common.by import By from PIL import Imagebro = webdriver.Chrome() bro.get('http://www.chaojiying.com/user/login/') bro.maximize_window()try:bro.save_screenshot('main.png') # 把當前頁面截圖截圖img = bro.find_element(By.XPATH, '/html/body/div[3]/div/div[3]/div[1]/form/div/img')location = img.locationsize = img.sizeprint(location)print(size)# 使用pillow扣除大圖中的驗證碼img_tu = (int(location['x']), int(location['y']), int(location['x'] + size['width']), int(location['y'] + size['height']))# # 摳出驗證碼# #打開img = Image.open('./main.png')# 摳圖fram = img.crop(img_tu)# 截出來的小圖fram.save('code.png')from chaojiying import ChaojiyingClientchaojiying = ChaojiyingClient('306334678', 'lqz12345', '937234')im = open('a.jpg', 'rb').read() # 本地圖片文件路徑 來替換 a.jpg 有時WIN系統(tǒng)須要//print(chaojiying.PostPic(im, 1902))except:pass finally:bro.close()

總結(jié)

以上是生活随笔為你收集整理的爬虫——动作链、xpath、打码平台使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。