花了一天的时间最后还是没能写出来
先别说我菜,咱们看一张图
什么鬼,没cookie,说实话,搞这个快一年了我还是第一次见
真的心态崩了
好,这些咱后面再说
咱们先来复习一下selenium
Python自动化之selenium
前面的小知识我就不说了
咱们直接实战
利用selenium直接登录wordpress
# !/usr/bin/python
# -*- coding:utf-8 -*-
# time: 2020.8.7
from selenium import webdriver
import time
browser = webdriver.Chrome()#声明浏览器对象
browser.get('https://hellohy.top/wp-login.php')#访问页面
time.sleep(2)#等待2s以便页面加载完成
name = browser.find_element_by_id('user_login')#利用ID查找元素
name.send_keys('****')#填充数据
password = browser.find_element_by_id("user_pass")
password.send_keys('********')
time.sleep(1)
browser.find_element_by_id('wp-submit').click()#利用ID查找元素并点击
time.sleep(3)
browser.close()#关闭网页
利用cookie登录wordpress
cookie用这个
# !/usr/bin/python
# -*- coding:utf-8 -*-
# time: 2020.8.7
import time
from selenium import webdriver
browser = webdriver.Chrome()
browser.get('https://hellohy.top/')
browser.add_cookie({'name':'wordpress_logged_in_29983b4ed8ae9ddbaff67eb1f69ff441','value':'*********************************'})
time.sleep(5)
browser.refresh()#刷新页面
selenium扩展知识
Selenium基本操作方法
- 基础操作
# 请求网页
driver.get("https://www.baidu.com/")
# 关闭网页
driver.close()
# 关闭浏览器
driver.quit()
- 查找Html元素
# 根据ID来查找某个元素
driver.find_element_by_id('')
driver.find_element(BY.ID,"")
# 根据类名来查找某个元素
driver.find_element_by_class_name('')
driver.find_element(BY.CLASS_NAME,'')
# 根据name属性来找查找某个元素
driver.find_element_by_name("")
driver.find_element(BY.NAME,"")
# 根据标签名来查找某个元素
driver.find_element_by_tag_name('')
driver.find_element(BY.TAG_NAME'')
# 根据xpath语法来查找某个元素
driver.find_element_by_xpath('//div')
driver.find_element(BY.XPATH,'//div')
# 根据css选择器来查找某个元素
driver.find_element_by_css_selector('//div')
driver.find_element(BY.CSS_SELECTOR,'//div')
find_element是获取第一个满足条件的元素。find_elements是获取所有满足条件的元素。
- 操作表单元素
- 操作输入框
# 找到输入框元素
inputTag = driver.find_element_by_id('kw')
# 填充数据
inputTag.send_keys("python")
# 清除数据
inputTag.clear()
- 操作checkbox
# 选择checkbox内标签对应的name值
rememberTag = driver.find_element_by_name("rememberMe")
# 执行选中操作
rememberTag.click()
- 操作select select元素不能直接点击。因为点击后还需要选中元素。这时候selenium就专门为select标签提供了一个类<mark style=”box-sizing: border-box;”>selenium.webdriver.support.ui.Select</mark>。将获取到的元素当成参数传到这个类中,创建这个对象。以后就可以使用这个对象进行选择了。
from selenium.webdriver.support.ui import Select
# 选中这个标签,然后使用Select创建对象
selectTag = Select(driver.find_element_by_name("jumpMenu"))
# 根据索引选择
selectTag.select_by_index(1)
# 根据值选择
selectTag.select_by_value("http://www.95yueba.com")
# 根据可视的文本选择
selectTag.select_by_visible_text("95秀客户端")
# 取消选中所有选项
selectTag.deselect_all()
- 操作按钮
# 选中按钮
inputTag = driver.find_element_by_id('su')
# 点击
inputTag.click()
4.行为链
有时候在页面中的操作可能要有很多步,那么这时候可以使用鼠标行为链类ActionChains来完成。比如现在要将鼠标移动到某个元素上并执行点击事件。
# 获取输入框
inputTag = driver.find_element_by_id('kw')
# 获取提交按钮
submitTag = driver.find_element_by_id('su')
#初始化行为链
actions = ActionChains(driver)
# 输入框输入内容
actions.move_to_element(inputTag)
actions.send_keys_to_element(inputTag,'python')
# 点击提交按钮
actions.move_to_element(submitTag)
actions.click(submitTag)
# 执行行为链
actions.perform()
还有更多的鼠标相关的操作。
click_and_hold(element):点击但不松开鼠标。
context_click(element):右键点击。
double_click(element):双击。
5.Cookies操作
1.获取所有cookies
for cookie in driver.get_cookies():
print(cookie)
2.根据cookie的key获取value
value = driver.get_cookie(key)
3.删除所有的cookie
driver.delete_all_cookies()
4.删除某个cookie
driver.delete_cookie(key)
6.切换页面
# 打开一个新的页面
driver.execute_script("window.open('"+url+"')")
# 切换到这个新的页面中
driver.switch_to_window(driver.window_handles[1])
自动签到脚本想法及扩展
快点写,今天搞的不能浪费了
前面都写了直接登录这里为啥就不行了呢?
行,这里可以这样搞
但是
验证码无论如何也搞不定
识别验证码不难难的是识别成功率低,低到什么程度
0%无一列成功,这还是我做了转灰度,二值化等处理后的结果
如果不经过处理根本就无法识别
经过半年的爬虫学习完全可以说稍微复杂一点的验证码比滑动验证,滑动拼图验证,点触验证难搞多了
没办法我又看见了一个机会
懂吧,这东西是没有验证的
可是!!!
换了三个浏览器全是这个
心态崩了呀
我还没放弃,在网上又见到了一种方法
打开我们的小ipad
怎么说,可以从这里拿数据,完美
md,打不开!!!
心态又崩了
不要慌
那意思是,还有知识盲区
好家伙,一百度全是盲区
有本地和服务器两种
关于cookie与本地 存储的区别的问题
1. cookie在浏览器和服务器间来回传递。而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存。
我又兴致冲冲的去搞本地
然而selenium却不支持这种方式
然后我又在想口否搞微信,哎又失败了
最后有百度得知有如此神奇的方法
md试几次根本就没用,认真看看貌似代码逻辑就有问题
不说了,心累
还有好多想说的但眼睛太疼了,想睡觉
晚安各位
FROM:浅浅淡淡[hellohy]
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论