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 27 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
Aug 07 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
Sep 08 Python
Python基础练习之用户登录实现代码分享
Nov 08 Python
Python使用分布式锁的代码演示示例
Jul 30 Python
python 去除二维数组/二维列表中的重复行方法
Jan 23 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
py-charm延长试用期限实例
Dec 22 Python
Python turtle画图库&&画姓名实例
Jan 19 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
Feb 26 Python
pymysql 插入数据 转义处理方式
Mar 02 Python
详解用selenium来下载小姐姐图片并保存
Jan 26 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
PHP4和PHP5性能测试和对比 测试代码与环境
2007/08/17 PHP
php set_magic_quotes_runtime() 函数过时解决方法
2010/07/08 PHP
批量去除PHP文件中bom的PHP代码
2012/03/13 PHP
PHP数据流应用的一个简单实例
2012/09/14 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
2014/07/30 PHP
PHP实现的蚂蚁爬杆路径算法代码
2015/12/03 PHP
PHP7 弃用功能
2021/03/09 PHP
让JavaScript 轻松支持函数重载 (Part 1 - 设计)
2009/08/04 Javascript
JS类的封装及实现代码
2009/12/02 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
jQuery阻止同类型事件小结
2013/04/19 Javascript
JQuery的自定义事件代码,触发,绑定简单实例
2013/08/01 Javascript
javascript实现的一个随机点名功能
2014/08/26 Javascript
JQuery右键菜单插件ContextMenu使用指南
2014/12/19 Javascript
JS获取数组最大值、最小值及长度的方法
2015/11/24 Javascript
详解js图片轮播效果实现原理
2015/12/17 Javascript
JavaScript中setter和getter方法介绍
2016/07/11 Javascript
javascript汉字拼音互转的简单实例
2016/10/09 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
Vue按需加载的具体实现
2017/12/02 Javascript
用Node提供静态文件服务的方法
2018/07/06 Javascript
微信小程序实现默认第一个选中变色效果
2018/07/17 Javascript
[01:22:19]EG vs TNC Supermajor小组赛B组败者组第一轮 BO3 第二场 6.2
2018/06/03 DOTA
手动实现把python项目发布为exe可执行程序过程分享
2014/10/23 Python
Python+OpenCV实现车牌字符分割和识别
2018/03/31 Python
Anaconda2下实现Python2.7和Python3.5的共存方法
2018/06/11 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
Html5让容器充满屏幕高度或自适应剩余高度的布局实现
2020/05/14 HTML / CSS
周鸿祎:教你写创业计划书
2013/12/30 职场文书
亲子活动总结
2014/04/26 职场文书
2014年社会实践活动总结范文
2014/04/29 职场文书
2014年中学生检讨书大全
2014/10/09 职场文书
2015羊年春节慰问信
2015/02/14 职场文书
2015年保卫科工作总结
2015/05/14 职场文书
《叶问2》观后感
2015/06/15 职场文书
python3使用diagrams绘制架构图的步骤
2021/04/08 Python