爬蟲案例(六)
1.selenium手動打碼
from selenium import webdriver
'''
問題一:
如果出現警示框,需要點選確認
解決方法:點選確認
切入警示框中並點選確定
driver.switch_to.alert.accept()
問題二:
如果配置好IE之後,出現驗證證照的問題:
解決:執行下面程式碼
driver.execute_script("javascript:document.getElementById('overridelink').click()")
問題三:
配置好之後,內容也輸入了,但是,無法點選查驗按鈕
解決:使用js點選
driver.execute_script("document.getElementById('checkfp').click()")
問題四:
配置好之後,報錯:xxx On CLOSED WINDOW
解決一:檢查IE遊覽器的配置:安全性---> 檢查登錄檔-->selenium版本和IE驅動的版本是否一致
解決二: 到登錄檔中 把 iexplorer.exe 名字 改成 iexplore.exe
解決三:選中IE遊覽器internet選項--->點選高階-->點選還原高階設定-->點選重置-->
'''
# 呼叫IE遊覽器
driver = webdriver.Ie(executable_path=r'D:\pachong\軟體\IEDriverServer.exe')
# 傳送請求
driver.get(url='https://inv-veri.chinatax.gov.cn/')
# 查詢發票程式碼並輸入
fpdm = driver.find_element_by_id("fpdm").send_keys('011002000211')
#查詢發票號碼並輸入
fplm = driver.find_element_by_id("fphm").send_keys('67866062')
#查詢開票日期並輸入
kprq = driver.find_element_by_id("kprq").send_keys('20200721')
#輸入校驗碼後6位 119902
kjje = driver.find_element_by_id('kjje').send_keys('119902')
# 輸入驗證碼
yzm = input('請輸入驗證碼:')
driver.find_element_by_id("yzm").send_keys(yzm)
driver.find_element_by_id("checkfp").click()
2.超級鷹打碼平臺
'''
超級鷹打碼平臺 http://www.chaojiying.com/
使用
賬號 Zzzzp123456
密碼 zp7512799
註冊 --->登入--->開發文件-->選擇python-->跨平臺HTTP WEB介面
1.請求 POST
url: http://upload.chaojiying.net/Upload/Processing.php
引數:
user=使用者賬號
pass=使用者密碼 //或 pass2=使用者密碼的md5值(32位小寫)
softid=軟體ID 在使用者中心,軟體ID處可以生成
codetype=驗證碼型別 在價格體系中選用一個適合的型別 點選這裡進入
len_min=最小位數 //預設0為不啟用,圖片型別為可變位長時可啟用這個引數
userfile=圖片檔案二進位制流(或是稱之為記憶體流,檔案流,位元組流的概念)
file_base64=圖片檔案base64字串
'''
import requests,base64
# 開啟檔案
fp = open('xiazai.jpg','rb')
img = base64.b64encode(fp.read())
#關閉檔案
fp.close()
data={
'user':'985RJC',
'pass':'Rongjichen110119',
'softid':'8ffc380a1b7a54e51d0de739cb292466',
'codetype':'1004',
'file_base64':img
}
response = requests.post(url='http://upload.chaojiying.net/Upload/Processing.php',data=data)
#獲取驗證碼
print(response.json()['pic_str'])
3.RDA財務機器人
‘’’
API Key : SgBvVbREKA7oM2VcmcCeDp5e
Secret Key: MSfcx3G9C6691rWSpaUxr09zwZlhMsWZ
'''
import requests
import base64
from selenium import webdriver
from PIL import Image
#定義獲取access_token函式
def get_token():
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=SgBvVbREKA7oM2VcmcCeDp5e&client_secret=MSfcx3G9C6691rWSpaUxr09zwZlhMsWZ'
response =requests.get(host)
if response:
return response.json()['access_token']
...
def shibie(token):
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/vat_invoice"
# 二進位制方式開啟圖片檔案
f = open('fapiao.png', 'rb')
img = base64.b64encode(f.read())
params = {"image":img}
request_url = request_url + "?access_token=" + token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
if response:
content = response.json()['words_result']
# 獲取發票程式碼
InvoiceCode = content['InvoiceCode']
# 獲取發票號碼
InvoiceNum = content['InvoiceNum']
# 獲取開票日期
InvoiceDate = content['InvoiceDate']
# 獲取校驗碼
CheckCode = content['CheckCode']
return InvoiceCode, InvoiceNum, InvoiceDate, CheckCode
#定義查驗函式
def start_check(detail):
# 呼叫IE遊覽器
driver = webdriver.Ie(executable_path=r'D:\pachong\軟體\IEDriverServer.exe')
# 訪問頁面
driver.get(url='https://inv-veri.chinatax.gov.cn/')
# 查詢發票程式碼並輸入
driver.find_element_by_id('fpdm').send_keys(detail[0])
# 查詢發票號碼並輸入
driver.find_element_by_id('fphm').send_keys(detail[1])
# 查詢開票日期並輸入
date = detail[2].replace('年', '').replace('月', '').replace('日', '')
driver.find_element_by_id('kprq').send_keys(date)
# 查詢校驗碼並輸入
driver.find_element_by_id('kjje').send_keys(detail[3][-6:])
# 輸入驗證碼:對接打碼平臺,打碼平臺接收圖片
# 截圖
driver.save_screenshot('yzm.png')
# 區域性截圖
# 開啟圖片
im = Image.open('yzm.png')
# 進行區域性截圖
# crop()接收元組:(左,上,右,下)
im = im.crop((710, 490, 1200, 610))
# 儲存區域性截圖
im.save('jubu.png')
# 呼叫打碼平臺
yzm = dama()
# 查詢並輸入驗證碼
driver.find_element_by_id('yzm').send_keys(yzm)
# 查詢並點選查驗按鈕
driver.find_element_by_id('checkfp').click()
# 定義打碼平臺函式
def dama():
# 讀取檔案
fp = open('jubu.png', 'rb')
image = base64.b64encode(fp.read())
# 關閉檔案
fp.close()
data = {
'user': '985RJC',
'pass': 'Rongjichen110119',
'softid': '8ffc380a1b7a54e51d0de739cb292466',
'codetype': '1004',
'file_base64': image
}
response = requests.post(url='http://upload.chaojiying.net/Upload/Processing.php', data=data)
# 獲取驗證碼
print(response.json()['pic_str'])
return response.json()['pic_str']
if __name__ == '__main__':
token = get_token()
detail = shibie(token)
start_check(detail)
...
4.豆瓣登入
#需求:破解滑塊驗證碼
import time
from selenium import webdriver
#匯入動作練
from selenium.webdriver.common.action_chains import ActionChains
# 呼叫遊覽器
driver = webdriver.Chrome(executable_path=r'C:\Users\Administrator\Downloads\chromedriver.exe')
#請求url
driver.get(url='https://www.douban.com/')
#0代表第一個iframe標籤
driver.switch_to.frame(0)
# 獲取點選密碼登入
driver.find_element_by_xpath('/html/body/div[1]/div[1]/ul[1]/li[2]').click()
# 獲取並輸入賬號
driver.find_element_by_id("username").send_keys('18524158889')
#獲取輸入錯的密碼
driver.find_element_by_id('password').send_keys('332er23r')
#獲取登入賬號並且點選登入 出現滑塊
driver.find_element_by_xpath('/html/body/div[1]/div[2]/div[1]/div[5]/a').click()
# 1.獲取滑塊
time.sleep(5)
driver.switch_to.frame(1)
huakuai = driver.find_element_by_id("tcaptcha_drag_thumb")
#拖動滑塊 保持執行
ActionChains(driver).click_and_hold(on_element=huakuai).perform()
#移動距離
ActionChains(driver).move_by_offset(xoffset=177,yoffset=0).perform()
#釋放滑鼠
# ActionChains(driver).release().perform()\
def get_tracks(distance):
"""
勻變速公式:
v = v0 + at
x = v0t + 1/2 * a*t**2
"""
# 定義初速度
v = 0
# 定義單位時間
t = 0.6
# 定義加速運動和減速運動的分界線
mid = distance * 4/5
# 定義當前位移
current = 0
# 定義運動軌跡列表
tracks = []
# 為了一直移動
while current < distance:
if mid > current:
# 定義加速運動的加速度
a = 2
else:
# 定義減速運動的加速度
a = -3
v0 = v
# 計算位移
x = v0*t + 1/2*a*t**2
# 計算當前位移
current += x
# 計算每一次移動的末速度
v = v0 + a*t
tracks.append(round(x))
return tracks
tracks = get_tracks(100)
for track in tracks:
ActionChains(driver).move_by_offset(xoffset=track,yoffset=0).perform()
time.sleep(1)
# 釋放滑鼠
ActionChains(driver).release().perform()
相關文章
- 爬蟲案例爬蟲
- 9.爬蟲案例爬蟲
- 六種高效爬蟲框架爬蟲框架
- 爬蟲學習日記(六)爬蟲
- 基礎爬蟲案例實戰爬蟲
- 爬蟲—有道翻譯案例分析爬蟲
- 爬蟲學習日記(六)完成第一個爬蟲任務爬蟲
- 爬蟲搭建代理池、爬取某網站影片案例、爬取新聞案例爬蟲網站
- 用Golang寫爬蟲(六) - 使用collyGolang爬蟲
- 基於 go + xpath 爬蟲小案例Go爬蟲
- 【Python學習】爬蟲爬蟲爬蟲爬蟲~Python爬蟲
- 搜狗搜尋微信Python爬蟲案例Python爬蟲
- 情況最簡單下的爬蟲案例爬蟲
- Python爬蟲實戰案例-爬取幣世界標紅快訊Python爬蟲
- 爬蟲:多程式爬蟲爬蟲
- python爬蟲---網頁爬蟲,圖片爬蟲,文章爬蟲,Python爬蟲爬取新聞網站新聞Python爬蟲網頁網站
- Python 爬蟲從入門到進階之路(六)Python爬蟲
- Python零基礎爬蟲教學(實戰案例手把手Python爬蟲教學)Python爬蟲
- 那些年,我爬過的北科(六)——反反爬蟲之js渲染爬蟲JS
- Python 爬蟲(六):使用 Scrapy 爬取去哪兒網景區資訊Python爬蟲
- 《網路爬蟲開發實戰案例》筆記爬蟲筆記
- 中國爬蟲違法違規案例彙總!爬蟲
- Java實現網路爬蟲 案例程式碼Java爬蟲
- 通用爬蟲與聚焦爬蟲爬蟲
- 爬蟲--Scrapy簡易爬蟲爬蟲
- 爬蟲進階:反反爬蟲技巧爬蟲
- 反爬蟲之字型反爬蟲爬蟲
- 爬蟲爬蟲
- 爬蟲案例2-爬取影片的三種方式之一:DrissionPage篇(3)爬蟲
- 爬蟲案例2-爬取影片的三種方式之一:selenium篇(2)爬蟲
- Python網路爬蟲實踐案例:爬取貓眼電影Top100Python爬蟲
- 一天時間入門python爬蟲,直接寫一個爬蟲案例,分享出來,很簡單Python爬蟲
- 【爬蟲】爬蟲專案推薦 / 思路爬蟲
- 網路爬蟲——爬蟲實戰(一)爬蟲
- 2個月精通Python爬蟲——3大爬蟲框架+6場實戰+反爬蟲技巧+分散式爬蟲Python爬蟲框架分散式
- 大型爬蟲案例:爬取去哪兒網自由行資料(10萬條資料)爬蟲
- Python爬蟲教程-01-爬蟲介紹Python爬蟲
- Java爬蟲與Python爬蟲的區別?Java爬蟲Python