python3爬虫总结(模拟滑块验证,自动登录)

1.应用python库

from urllib import request

import ssl

from bs4 import BeautifulSoup

import sys

import io

import json

import time

import random

from selenium import webdriver

from selenium.webdriver import ActionChains

from selenium.webdriver.common.by import By

from selenium.webdriver.support import expected_conditions as EC

from selenium.webdriver.support.wait import WebDriverWait

from selenium.common.exceptions import TimeoutException, NoSuchElementException

from selenium.webdriver.chrome.options import Options

from selenium.webdriver.common.keys import Keys

from mitmproxy import ctx

2.主要思路

1.首先用urllib的request请求要爬取的页面: 

  # 请求
  req = request.Request(url)
  # 设置cookie
  file = open('cookie.txt', 'r+', encoding='utf-8')  
  cookie_str = file.read()
  file.close()
  # print('cookie_str',cookie_str)
  req.add_header('cookie', cookie_str)
  req.add_header('User-Agent', 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) 
  AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.372
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
人工模拟滑块验证爬虫代码Python有点复杂,需要使用一些第三方库来实现。下面是一个示例代码,需要注意的是,网站的具体滑块验证方式可能有所不同,需要根据实际情况进行修改。 ```python import time import random from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as ec # 初始化浏览器驱动 driver = webdriver.Chrome() driver.maximize_window() # 打开目标网站 driver.get("https://www.example.com/") # 等待页面加载完成 wait = WebDriverWait(driver, 10) slider = wait.until(ec.presence_of_element_located((By.CLASS_NAME, "slider"))) # 滑块 bg = wait.until(ec.presence_of_element_located((By.CLASS_NAME, "bg"))) # 背景图片 # 获取滑块、背景图片的 X 坐标 slider_x = slider.location['x'] bg_x = bg.location['x'] # 计算滑块需要滑动的距离 distance = bg_x - slider_x # 模拟人类行为,随机生成一些鼠标移动的轨迹 tracks = [] current = 0 mid = distance * 3 / 5 while current < distance: if current < mid: offset = random.randint(1, 5) else: offset = random.randint(6, 9) tracks.append(offset) current += offset # 模拟鼠标拖动滑块 action = ActionChains(driver) action.click_and_hold(slider).perform() for track in tracks: action.move_by_offset(track, 0) action.release().perform() # 等待滑块验证完成,如果成功则跳转至目标页面 time.sleep(5) if driver.current_url == "https://www.example.com/target_page": print("验证成功") else: print("验证失败") # 关闭浏览器 driver.quit() ``` 上面的代码使用了 Selenium 库来实现模拟鼠标拖动滑块的功能。需要提前安装好 Chrome 浏览器和 ChromeDriver 驱动程序,并将其加入系统环境变量中。在运行前需要修改代码中的网站链接和滑块、背景图片的选择器等信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值