爬取企查查


爬取企查查需要考慮到其驗證碼問題

驗證碼有兩種(滑動驗證碼和圖片驗證碼)

一、滑動驗證碼

解決辦法:使用selenium技術

1 先獲取到需滑動的塊狀

2 進行滑動、點擊按鈕

具體代碼如下:

def get_track(distance):
    track = []
    current = 0
    mid = distance * 3 / 4
    t = 0.2
    v = 0
    while current < distance:
        if current < mid:
            a = 2
        else:
            a = -3
        v0 = v
        v = v0 + a * t
        move = v0 * t + 1 / 2 * a * t * t
        current += move
        track.append(round(move))
    return track


# 滑動驗證碼識別
def slide_discern():
    print("滑塊驗證碼驗證中。。。")
   #創建無界面模式 chrome_options = Options() chrome_options.add_argument('--headless') chrome_options.add_argument('--disable-gpu') driver = webdriver.Chrome(chrome_options=chrome_options)
   # 獲取到需滑動的按鈕 source = driver.find_element_by_xpath('//*[@id="nc_1_n1z"]') action = ActionChains(driver) # 按住左鍵不放 action.click_and_hold(source).perform() # 開始滑動 distance = 340
   # 模擬以人為速度拖動 track = get_track(distance) for i in track: action.move_by_offset(xoffset=i, yoffset=0).perform() action.reset_actions() # 釋放鼠標 action.release().perform()

 

二 :圖片驗證碼

解決辦法:使用第三方平台進行驗證(超級鷹)

超級鷹使用方法:

1:登陸網址:http://www.chaojiying.com/ 進行注冊

2:注冊完成點擊菜單欄中開發者文檔,下載python代碼文件

點擊下載

解壓文件 把里面的chaojiying.py 復制到你本人項目目錄中,共以下步驟使用

 

3、進入超級鷹的用戶中心生成軟件ID

點擊提交會出現一個軟件ID列表

復制軟件ID 待會 會使用到

 將下載好的chaojiying.py 文件打開

可以看到 要使用chaojiying就會用到用戶名、密碼、以及剛剛創建的軟件ID

那么下面就是就讓我們來看看代碼吧

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver import ActionChains
import time
from PIL import Image
from work.chaojiying import Chaojiying
# 用戶名
CHAOJIYING_USERNAME = 'xxxx'
# 密碼
CHAOJIYING_PASSWORD = 'xxxx'
# 軟件ID
CHAOJIYING_SOFT_ID = xxxx
# 驗證碼類型
CHAOJIYING_KIND = 1004

# 圖片驗證碼識別
def image_discern():
    print("圖片驗證碼驗證中。。。")
    # 設置無頭瀏覽器
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--disable-gpu')
    driver = webdriver.Chrome(chrome_options=chrome_options)
    
    driver.implicitly_wait(2)
    # 截取圖片
    driver.get_screenshot_as_file('yzm.png')
    # 獲取驗證碼圖片位置
    img = driver.find_element_by_xpath('//*[@id="nc_1__imgCaptcha_img"]/img')
    i_left = img.location["x"]
    i_top = img.location["y"]
    i_right = i_left + img.size["width"]
    i_bottom = i_top + img.size["height"]
    im = Image.open("yzm.png")
    img = im.crop((i_left, i_top, i_right, i_bottom))
    img.save("succeed.png")

    # 超級鷹識別
    print("超級鷹識別驗證碼中。。。")
    # 創建超級鷹對象
    chaojiying = Chaojiying(CHAOJIYING_USERNAME, CHAOJIYING_PASSWORD, CHAOJIYING_SOFT_ID)
    with open('succeed.png', 'rb') as f:
        image = f.read()
    # 使用超級鷹識別驗證碼
    result = chaojiying.post_pic(image, CHAOJIYING_KIND)
    code = result["pic_str"]
    print("驗證碼:", code)
    # 輸入驗證碼
    driver.find_element_by_xpath('//*[@id="nc_1_captcha_input"]').send_keys(code)
    driver.implicitly_wait(3)
    # 點擊提交驗證碼按鈕
    time.sleep(1)
    driver.find_element_by_xpath('//*[@id="nc_1_scale_submit"]').click()
    time.sleep(1)
    # 點擊登陸按鈕
    print("點擊按鈕驗證一下")
    driver.find_element_by_xpath('//*[@id="verify"]').click()

驗證碼類型 CHAOJIYING_KIND = 1004

可參考:http://www.chaojiying.com/price.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM