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 相关文章推荐
Python中Collections模块的Counter容器类使用教程
May 31 Python
python3将视频流保存为本地视频文件
Jun 20 Python
python中使用zip函数出现错误的原因
Sep 28 Python
python DataFrame 取差集实例
Jan 30 Python
详解python:time模块用法
Mar 25 Python
Python实现的远程文件自动打包并下载功能示例
Jul 12 Python
Python搭建代理IP池实现获取IP的方法
Oct 27 Python
深入浅析python的第三方库pandas
Feb 13 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 Python
Python爬虫爬取微信朋友圈
Aug 06 Python
python里反向传播算法详解
Nov 22 Python
用Python将GIF动图分解成多张静态图片
Jun 11 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中循环语句的用法介绍
2012/01/30 PHP
php一个解析字符串排列数组的方法
2015/05/12 PHP
js 获取Listbox选择的值的代码
2010/04/15 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
jquery下onpropertychange事件的绑定方法
2010/08/01 Javascript
动态的创建一个元素createElement及删除一个元素
2014/01/24 Javascript
JavaScript极简入门教程(二):对象和函数
2014/10/25 Javascript
PHP配置文件php.ini中打开错误报告的设置方法
2015/01/09 PHP
JS实现从连接中获取youtube的key实例
2015/07/02 Javascript
纯JavaScript代码实现移动设备绘图解锁
2015/10/16 Javascript
使用pcs api往免费的百度网盘上传下载文件的方法
2016/03/17 Javascript
浅析jQuery中使用$所引发的问题
2016/05/29 Javascript
微信小程序遇到修改数据后页面不渲染的问题解决
2017/03/09 Javascript
JavaScript canvas实现围绕旋转动画
2017/11/18 Javascript
在vue-cli搭建的项目中增加后台mock接口的方法
2018/04/26 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
angular2 组件之间通过service互相传递的实例
2018/09/30 Javascript
Egg Vue SSR 服务端渲染数据请求与asyncData
2019/11/24 Javascript
[01:03:56]Mineski vs TNC 2018国际邀请赛淘汰赛BO1 8.21
2018/08/22 DOTA
利用Python找出序列中出现最多的元素示例代码
2017/12/08 Python
浅谈Python traceback的优雅处理
2018/08/31 Python
python实现转圈打印矩阵
2019/03/02 Python
使用python实现男神女神颜值打分系统(推荐)
2019/10/31 Python
python中查看.db文件中表格的名字及表格中的字段操作
2020/07/07 Python
html5的canvas实现3d雪花飘舞效果
2013/12/27 HTML / CSS
使用Html5 Stream开发实时监控系统
2020/06/02 HTML / CSS
销售员自我评价怎么写
2013/09/19 职场文书
大学生励志演讲稿
2014/04/25 职场文书
防汛工作情况汇报
2014/10/28 职场文书
2015年员工试用期工作总结
2014/12/12 职场文书
美术教师个人总结
2015/02/06 职场文书
世界地球日活动总结
2015/02/09 职场文书
2015年安全员工作总结范文
2015/04/22 职场文书
家庭教育培训学习心得体会
2016/01/14 职场文书
如何用PHP实现多线程编程
2021/05/26 PHP
解决vue自定义组件@click点击失效问题
2022/04/30 Vue.js