建议:
减少抓列表数据,保存页面
关注网页极速版,APP版
多使用IP,动态UA,代理IP,不使用cookie
多利用线程分布式
===================================
selenium 可以接受指令。获取需要的数据,或者报错截屏
PhantomJS 无界面浏览器(可以截屏保存)
加载到内存然后执行JS
需要下载
解决方案:
https://www.cnblogs.com/zhaijiahui/p/8954304.html
下载连接
https://chromedriver.storage.googleapis.com/index.html
from selenium import webdriver
import time
d1=webdriver.Chrome(r"C:\Users\xzq\Downloads\chromedriver_win32 (1)\chromedriver.exe")
d1.get("https://login.taobao.com/member/login.jhtml?spm=a21bo.2017.754894437.1.5af911d9bW79Rz&f=top&redirectURL=https%3A%2F%2Fwww.taobao.com%2F")
d1.find_element_by_id("J_Quick2Static").click()
time.sleep(3)
d1.find_element_by_id("TPL_username_1").send_keys("扯淡灬孩子02547915")
d1.find_element_by_id("TPL_password_1").send_keys("a13736784065")
d1.find_element_by_id("J_SubmitStatic").click()
解决滑动校验
button = d1.find_element_by_id('nc_1_n1z')# 找到“蓝色滑块”
action = webdriver.ActionChains(d1)# 实例化一个action对象
action.click_and_hold(button).perform()# perform()用来执行ActionChains中存储的行为
action.reset_actions()
action.move_by_offset(280, 0).perform()# 移动滑块
action.release()
=================================================================================================
解决验证码
1同一个url 会产生同一个验证码的url
直接request请求验证码地址 交给打码平台处理
2同一个url 会产生不同验证码的url
1.实例化session
2.使用session 请求页面,获取验证码地址
3.发送session请求验证码,使用打码识别
4.使用session发送post
使用selenium 遇到验证码:
selenium请求登陆页面,同时拿到验证码地址
获取登陆drive中的cookie,交给request处理识别
或者使用截图工具找出验证码 用打马识别
============================================================================================
获取文本和属性
1.先定位到元素,然后调用.text 或者get_attributee
find_element 返回的是一个element 如果没有就会报错
find_elemants 返回是的一个列表,没有就是空列表
==================================================================
解决find_element 失败的方法
可能页面中有iframe,frame
需要先调用
d1.switch_to.frame(“framae_name”)
然后再取输入内容
==================================================================
=======================================================================
解决后续请求新的页面获取元素时报错(加载未完成就获取数据)
===================================================================================================================================================
使用ORC识别验证码**
1.安装PIL (python3 中没有直接的PIL 版本供应下载 可以先使用 Pillow)
2.导入from PIL import Image
import pytesseract
from PIL import Image
img=Image.open("0014076720724832de067ce843d41c58f2af067d1e0720f000[1].jpg")
print(pytesseract.image_to_string(img))
如果报错请参考(原因是因为没有安装ORC)下载后在pytesseract的tesseract_cmd下添加tesserac.exet路径即可
无法加载中文
添加系统变量
详细https://blog.csdn.net/wang_hugh/article/details/80760940
下载方法https://blog.csdn.net/ocean35/article/details/82942382
============================================================================================================