Selenium 的好处:
有些网站的JS或加密 太复杂,可破动态加载的网页,节约时间成本,模拟游览器进行操作简单
若想 找刺激 ,就先去各大网站的登陆页面试试水。
套路就一个: 抓包分析参数,利用游览器的监听事件,找到参数的大概位置,下断点,一步一步调试游览器。找到怎样加密的。。
from selenium import webdriver
需要下载启动的exe文件:
火狐:geckodriver.exe
无头游览器:phantomjs.exe 停止更新
谷歌:chromedriver.exe 对应游览器版本
全部用火狐游览器举例:
driver = webdriver.Firefox(executable_path=path) 创建一个web 启动器可传入装置的位置
driver.get(‘https://www.baidu.com’) 访问一个网站
driver.page_source 相当于 requests 返回的 text 信息
超时时间 可利用 time.sleep 自行测试
driver1.set_page_load_timeout(40) 页面超时时间
driver1.set_script_timeout(40) 脚本加载超时时间
driver1.set_window_size(1366,768) 游览器的 大小
定位元素的函数 看个人喜好,我喜欢用 xpath,里面有很多方法:tag标签,css选择器等
driver.find_element_by_xpath() 通过 xpath 定位 元素,只能定位第一个
driver.find_elements_by_xpath() 通过 xpath 定位 元素 返回列表,可定为多个
# 获取截图
driver.get_screenshot_as_file('screenshot.png')
# print('element',element)
left = int(element.location['x'])
# print(left)
top = int(element.location['y'])
right = int(element.location['x'] + element.size['width'])
bottom = int(element.location['y'] + element.size['height'])
# 通过Image处理图像,得到准确的photo
from PIL import Image
im = Image.open('screenshot.png')
im = im.crop((left, top, right, bottom))
im.save('vcode.png')
定位 后 可以进行 事件控制例如 点击,双击,右键,拖动
定位后 赋予 给 element_login 变量
鼠标的操作: 两篇文章
https://blog.csdn.net/huilan_same/article/details/52305176?utm_source=copy
https://blog.csdn.net/CCGGAAG/article/details/75717186
selenium 关于游览器 模拟鼠标的 移动的时候 有坑: 由于游览器的大小被确定了,当移动到游览器外面时,会报错。。
当在同一个游览器,点击打开多个网页时:会出现无法获取到你想要的网页信息。
不要慌,这个时候,你需要考虑,你的句柄是否在页面 。。如若不然,你需要移动句柄到当前页面。。
移动到当前页面:
all_page = driver.window_handles #返回 游览器句柄的列表
current_page = driver.current_window_handle # 获取当前页面的句柄
driver.switch_to_window(driver.window_handles[1])#移动句柄
处理JS弹窗:https://www.cnblogs.com/mengyu/p/6952774.html
driver.quit() 退出游览器
还有一点坑爹的,在少部分网站,你访问网页的速度不要太快,移动的时候,不要瞬移,不要 移动速度 不变,等一些别的因素 不然会被认定为 机器人,然后返回给个异常给你。
感觉差不多了,若遇到不一样的会补充。