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中列表、字典、元组数据结构的简单学习笔记
Mar 20 Python
python爬虫面试宝典(常见问题)
Mar 02 Python
Django重装mysql后启动报错:No module named ‘MySQLdb’的解决方法
Apr 22 Python
Python中__slots__属性介绍与基本使用方法
Sep 05 Python
解决pyinstaller打包exe文件出现命令窗口一闪而过的问题
Oct 31 Python
PyQt5 窗口切换与自定义对话框的实例
Jun 20 Python
Python异常处理例题整理
Jul 07 Python
详解Python list和numpy array的存储和读取方法
Nov 06 Python
flask框架自定义过滤器示例【markdown文件读取和展示功能】
Nov 08 Python
基于keras 模型、结构、权重保存的实现
Jan 24 Python
python 爬虫如何正确的使用cookie
Oct 27 Python
Django框架之路由用法
Jun 10 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 array_slice函数的使用以及参数详解
2008/08/30 PHP
zend api扩展的php对象的autoload工具
2011/04/18 PHP
php中拷贝构造函数、赋值运算符重载
2012/07/25 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
php基于str_pad实现卡号不足位数自动补0的方法
2014/11/12 PHP
PHP基本语法实例总结
2016/09/09 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
关于PHP求解三数之和问题详析
2020/11/09 PHP
新浪的图片新闻效果
2007/01/13 Javascript
用jscript实现列出安装的软件列表
2007/06/18 Javascript
可以把编码转换成 gb2312编码lib.UTF8toGB2312.js
2007/08/21 Javascript
一个js写的日历(代码部分网摘)
2009/09/20 Javascript
javascript使用isNaN()函数判断变量是否为数字
2013/09/21 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
jQuery实现加入收藏夹功能(主流浏览器兼职)
2016/12/24 Javascript
快速解决vue动态绑定多个class的官方实例语法无效的问题
2018/09/05 Javascript
关于layui flow loading占位图的实现方法
2019/09/21 Javascript
java和js实现的洗牌小程序
2019/09/30 Javascript
[03:03]2014DOTA2西雅图国际邀请赛 Alliance战队巡礼
2014/07/07 DOTA
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
简单介绍Python中的JSON模块
2015/04/08 Python
简述Python中的进程、线程、协程
2016/03/18 Python
python读取文件名称生成list的方法
2018/04/27 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
opencv+python实现均值滤波
2020/02/19 Python
pyautogui自动化控制鼠标和键盘操作的步骤
2020/04/01 Python
纯css3实现照片墙效果
2014/12/26 HTML / CSS
纯CSS3制作页面切换效果的实例代码
2019/05/30 HTML / CSS
Move Free官方海外旗舰店:美国骨关节健康专业品牌
2017/12/06 全球购物
Capitol Lighting的1800lighting.com:住宅和商业照明
2019/04/10 全球购物
nohup的用法
2012/11/26 面试题
如何写一个Java类既可以用作applet也可以用作java应用
2016/01/18 面试题
校运动会广播稿(100篇)
2014/09/12 职场文书
私营公司诉讼代理委托书范本
2014/09/13 职场文书
2014党员学习习主席讲话思想汇报
2014/09/15 职场文书
2014单位领导班子四风对照检查材料思想汇报
2014/09/25 职场文书