测试网址是网易cc,只是研究爬虫自动化
1、Iframe窗口切换
import time, re
from selenium import webdriver
chrome_option = webdriver.ChromeOptions()
driver = webdriver.Chrome(chrome_options=chrome_option)
driver.set_window_size(1440, 900)
driver.get("http://cc.163.com/")
driver.implicitly_wait(10)
if driver.find_element_by_id("browser-zoom-tips"):
driver.find_element_by_xpath("//div[@class='zoom-closeBt']").click()
#这里有个iframe,找到iframe父节点
ele=driver.find_element_by_xpath("//*[@id='js-login-urs']/iframe")
driver.switch_to_frame(ele)
driver.find_element_by_class_name("j-inputtext dlemail j-nameforslide").send_keys("********")
driver.find_element_by_class_name("j-inputtext dlpwd").send_keys("*********")
#driver.find_element_by_xpath("//div[@class='yidun_slider']").click()
2、滑动验证图片获取
如下图所示,在元素查找中能获得滑块和背景图的class属性,这样我们可以通过定位这个属性,将这两张图片下载下来
target = self.wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'yidun_bg-img')))
template = self.wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'yidun_jigsaw')))
target_link = target.get_attribute('src')
template_link = template.get_attribute('src')
target_img = Image.open(BytesIO(requests.get(target_link).content))
template_img = Image.open(BytesIO(requests.get(template_link).content))
target_img.save('target.jpg')
template_img.save('template.png')
local_img = Image.open('target.jpg')
3、获取匹配距离
def match(self, target, template):
img_rgb = cv2.imread(target)
img_gray = cv2.cvtColor(img_rgb, cv2.COLOR_BGR2GRAY)
template = cv2.imread(template, 0)
run = 1
w, h = template.shape[::-1]
print(w, h)
res = cv2.matchTemplate(img_gray, template, cv2.TM_CCOEFF_NO