爬取企查查

爬取企查查需要考虑到其验证码问题

验证码有两种(滑动验证码和图片验证码)

一、滑动验证码

爬取企查查_第1张图片

解决办法:使用selenium技术

1 先获取到需滑动的块状

爬取企查查_第2张图片

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()

 

二 :图片验证码

爬取企查查_第3张图片

解决办法:使用第三方平台进行验证(超级鹰)

超级鹰使用方法:

1:登陆网址:http://www.chaojiying.com/ 进行注册

2:注册完成点击菜单栏中开发者文档,下载python代码文件

爬取企查查_第4张图片

爬取企查查_第5张图片

点击下载

爬取企查查_第6张图片

解压文件 把里面的chaojiying.py 复制到你本人项目目录中,共以下步骤使用

 爬取企查查_第7张图片

3、进入超级鹰的用户中心生成软件ID

爬取企查查_第8张图片

爬取企查查_第9张图片

点击提交会出现一个软件ID列表

复制软件ID 待会 会使用到

 将下载好的chaojiying.py 文件打开

爬取企查查_第10张图片

可以看到 要使用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

 

转载于:https://www.cnblogs.com/renshaoqi/p/10956950.html

你可能感兴趣的:(爬取企查查)