python模拟浏览器 使用selenium进入好友QQ空间并留言


Posted in Python onApril 12, 2022

首先下载selenium模块,pip install selenium,下载一个浏览器驱动程序(我这里使用谷歌)。

#导入
#注意python各版本find_element()方法的变化(python3.10)
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
# 创建一个模拟浏览器对象,然后通过对象去操作浏览器s=Service("chromedriver.exe")browser=webdriver.Chrome(service=s)

QQ空间默认登录是使用二维码登录,我们要使用账号密码登录注意QQ空间登录框在一个iframe标签里:定位该框架

python模拟浏览器 使用selenium进入好友QQ空间并留言

browser.get('https://qzone.qq.com/')
browser.maximize_window()time.sleep(2)
browser.switch_to.frame('login_frame')
a_tag = browser.find_element(By.ID,"switcher_plogin")
a_tag.click()

 接下来就是输入账号,密码,点击登录

userName_tag = browser.find_element(By.ID,'u')
password_tag =browser.find_element(By.ID,'p')
time.sleep(1)
userName_tag.send_keys('这里是QQ号')
time.sleep(1)
password_tag.send_keys('这里是密码')
time.sleep(1)
btn = browser.find_element(By.ID,'login_button')
btn.click()

 目前实现的效果图

python模拟浏览器 使用selenium进入好友QQ空间并留言

接下来实现的是,进入上边导航栏的好友页面,并定位好友搜索框,向搜索框传递要搜索的好友

python模拟浏览器 使用selenium进入好友QQ空间并留言

 :部分iframe没有id或name,用xpath定位

browser.switch_to.default_content()  # 登陆完后回到默认框架
time.sleep(1)
browser.find_element(By.XPATH,'//*[@id="aMyFriends"]').click()
time.sleep(1)
element1 =browser.find_element(By.XPATH,'//[@id="app_container"]/iframe')
browser.switch_to.frame(element1)
ff=browser.find_element(By.XPATH,'//*[@id="qz-search-box-input"]')
ff.send_keys(friend)
time.sleep(1)
browser.switch_to.default_content()
element2=browser.find_element(By.XPATH,'//[@id="app_container"]/iframe')
browser.switch_to.frame(element2)
browser.find_element(By.XPATH,'//*[@id="qz-search-box-result"]/li/div[2]/p').click()
time.sleep(1)
browser.find_element(By.XPATH,'//[@id="mecarewho_list"]/li/div[2]/div[2]/p/a').click()time.sleep(1)
#进入好友的页面

实现效果:

python模拟浏览器 使用selenium进入好友QQ空间并留言

 接下来就是进入好友留言板进行留言

注意的是留言框和发表按钮在不同的frame,发表在外面的一层,仔细查看

windows = browser.window_handles
browser.switch_to.window(windows[-1])
time.sleep(1)
browser.find_element(By.XPATH,'//*[@id="friendship_promote_layer"]/table/tbody/tr[1]/td[2]/a').click()
time.sleep(1)
#browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
browser.find_element(By.XPATH,'//*[@id="menuContainer"]/div/ul/li[4]').click()#或者  browser.find_element(By.XPATH,"//div[@id='layBackground']//li[@class = 'menu_item_334']//a[text()='留言板']").click()
time.sleep(3)#进入留言板
browser.switch_to.frame('tgb')
time.sleep(1)
browser.switch_to.frame('veditor1_Iframe')
time.sleep(1)
ff=browser.find_element(By.XPATH,'/html/body')#留言框
ff.send_keys(word)
browser.switch_to.default_content()
browser.switch_to.frame('tgb')
dd=browser.find_element(By.XPATH,'//*[@id="btnPostMsg"]')
dd.click()#确认发表按钮
print("留言成功!!!")
time.sleep(2)
browser.quit()

python模拟浏览器 使用selenium进入好友QQ空间并留言

 python小白,有错误的的地方还请多多指教

完整代码如下:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
import time
from selenium.webdriver import ActionChains
from selenium.webdriver import ChromeOptions
# 请输入好友和留言内容
qq=input('输入自己的QQ号:')
friend = input('请输入好友:')
word = input('请输入留言内容:')
# 创建一个模拟浏览器对象,然后通过对象去操作浏览器
option=ChromeOptions()
option.add_argument('--headless')
option.add_argument('--disable-gpu')
s=Service("chromedriver.exe")
browser = webdriver.Chrome(service=s,options=option)
browser.get('https://qzone.qq.com/')
browser.maximize_window()
time.sleep(2)
 
browser.switch_to.frame('login_frame')
a_tag = browser.find_element(By.ID,"switcher_plogin")
a_tag.click()
userName_tag = browser.find_element(By.ID,'u')
password_tag =browser.find_element(By.ID,'p')
time.sleep(1)
userName_tag.send_keys(qq)
time.sleep(1)
password_tag.send_keys('此处输入自己的密码')
time.sleep(1)
btn = browser.find_element(By.ID,'login_button')
btn.click()
 
browser.switch_to.default_content()  # 登陆完后回到默认框架
time.sleep(1)
browser.find_element(By.XPATH,'//*[@id="aMyFriends"]').click()
time.sleep(1)
element1 =browser.find_element(By.XPATH,'//*[@id="app_container"]/iframe')
browser.switch_to.frame(element1)
ff=browser.find_element(By.XPATH,'//*[@id="qz-search-box-input"]')
ff.send_keys(friend)
time.sleep(1)
browser.switch_to.default_content()
element2 =browser.find_element(By.XPATH,'//*[@id="app_container"]/iframe')
browser.switch_to.frame(element2)
browser.find_element(By.XPATH,'//*[@id="qz-search-box-result"]/li/div[2]/p').click()#难点
time.sleep(1)#搜索ok
browser.find_element(By.XPATH,'//*[@id="mecarewho_list"]/li/div[2]/div[2]/p/a').click()
time.sleep(1)#进入好友
# 获得打开的第一个窗口句柄
windows = browser.window_handles
browser.switch_to.window(windows[-1])
time.sleep(1)
browser.find_element(By.XPATH,'//*[@id="friendship_promote_layer"]/table/tbody/tr[1]/td[2]/a').click()
time.sleep(1)
#browser.execute_script('window.scrollTo(0,document.body.scrollHeight)')
browser.find_element(By.XPATH,'//*[@id="menuContainer"]/div/ul/li[4]').click()#或者  browser.find_element(By.XPATH,"//div[@id='layBackground']//li[@class = 'menu_item_334']//a[text()='留言板']").click()
time.sleep(3)#进入留言板
browser.switch_to.frame('tgb')
time.sleep(1)
browser.switch_to.frame('veditor1_Iframe')
time.sleep(1)
ff=browser.find_element(By.XPATH,'/html/body')#留言框
ff.send_keys(word)
browser.switch_to.default_content()
browser.switch_to.frame('tgb')
dd=browser.find_element(By.XPATH,'//*[@id="btnPostMsg"]')
dd.click()#确认发表按钮
print("留言成功!!!")
time.sleep(2)
browser.quit()

到此这篇关于python使用selenium模拟浏览器进入好友QQ空间留言的文章就介绍到这了!

Python 相关文章推荐
wxpython 学习笔记 第一天
Mar 16 Python
Python实例一个类背后发生了什么
Feb 09 Python
Python实现快速排序算法及去重的快速排序的简单示例
Jun 26 Python
Pycharm编辑器技巧之自动导入模块详解
Jul 18 Python
Django在win10下的安装并创建工程
Nov 20 Python
python通过getopt模块如何获取执行的命令参数详解
Dec 29 Python
python opencv捕获摄像头并显示内容的实现
Jul 11 Python
tensorflow之变量初始化(tf.Variable)使用详解
Feb 06 Python
python 的topk算法实例
Apr 02 Python
Python操作Elasticsearch处理timeout超时
Jul 17 Python
python 如何区分return和yield
Sep 22 Python
Python 找出英文单词列表(list)中最长单词链
Dec 14 Python
Python安装使用Scrapy框架
Python使用华为API为图像设置多个锚点标签
python实现手机推送 代码也就10行左右
Apr 12 #Python
Python内置包对JSON文件数据进行编码和解码
详细介绍python操作RabbitMq
Python selenium绕过webdriver监测执行javascript
Apr 12 #Python
Pillow图像处理库安装及使用
Apr 12 #Python
You might like
PHP 裁剪图片成固定大小代码方法
2009/09/09 PHP
php模板中出现空行解决方法
2011/03/08 PHP
PHP的Yii框架中行为的定义与绑定方法讲解
2016/03/18 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
拖动布局之保存布局页面cookies篇
2010/10/29 Javascript
js如何设置在iframe框架中指定div不显示
2013/12/04 Javascript
jQuery判断元素是否存在的可靠方法
2014/05/06 Javascript
Javascript中的apply()方法浅析
2015/03/15 Javascript
javascript中checkbox使用方法简单实例演示
2015/11/17 Javascript
javascript 广告移动特效的实现代码
2016/06/25 Javascript
浅谈js继承的实现及公有、私有、静态方法的书写
2016/10/28 Javascript
Jquery Easyui验证组件ValidateBox使用详解(20)
2016/12/18 Javascript
jquery图片放大镜效果
2017/06/23 jQuery
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
layui在form表单页面通过Validform加入简单验证的方法
2019/09/06 Javascript
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
[13:40]TI3青蛙君全程回顾 DOTA2我们为梦想再战
2013/09/13 DOTA
Python简单实现TCP包发送十六进制数据的方法
2016/04/16 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
Python中property属性实例解析
2018/02/10 Python
Python with用法:自动关闭文件进程
2019/07/10 Python
如何在keras中添加自己的优化器(如adam等)
2020/06/19 Python
python将数据插入数据库的代码分享
2020/08/16 Python
pycharm中leetcode插件使用图文详解
2020/12/07 Python
AmazeUI 面板的实现示例
2020/08/17 HTML / CSS
Solaris操作系统的线程机制
2012/12/23 面试题
公司成立感言
2014/01/11 职场文书
市场营销管理制度
2014/01/29 职场文书
外贸业务员求职信
2014/06/16 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
小学语文国培研修日志
2015/11/13 职场文书
六五普法学习心得体会
2016/01/21 职场文书
优秀共产党员事迹材料2016
2016/02/29 职场文书
宪法宣传标语100条
2019/10/15 职场文书
解决SpringCloud Feign传对象参数调用失败的问题
2021/06/23 Java/Android