贴吧一键签到机selenium自动化
感觉有一段时间没有发博客了,今天1024,发一篇福利吧。贴吧签到机,利用selenium模拟浏览器登录,然后根据你关注的贴吧进行签到。
1.首先需要安装python2.7,Chrome浏览器,selenium,lxml
过程略
2.要上代码了
具体实现过程:
- 登录
- 获取访问贴吧的地址
- 写个for循环逐个访问并签到
2.1首先要解决登录问题
我把代码都封装在一个类里面了凑合着看吧
其中需要输入的url就是自己登陆了百度贴吧以后的地址,例如下面图中的这个地址栏点击,复制进去就行了
import time
from selenium import webdriver
from lxml import etreeclass tiebaSpider():def __init__(self,url):'''初始化:param url: '''self.url=urldriver = webdriver.Chrome()self.driver=driverdriver.delete_all_cookies()driver.get(url)html = driver.page_sourceself.html=htmltime.sleep(1)selector = etree.HTML(html)self.selector=selectordef logIn(self,useName,passWord):'''登录模块,需要用户名和密码:param useName::param passWord::return:'''driver=self.drivertime.sleep(2)driver.find_element_by_xpath('//*[@id="com_userbar"]/ul/li[4]/div/a').click()time.sleep(2)driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__footerULoginBtn"]').click()time.sleep(2)driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__userName"]').send_keys(useName)time.sleep(2)driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__password"]').send_keys(passWord)time.sleep(2)driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__submit"]').click()time.sleep(2)
2.2获取需要访问的贴吧
def getList1(self):'''获取关注的贴吧的地址列表:return: '''button = self.driver.find_element_by_xpath('//*[@id="forum_group_wrap"]/span/span[1]')time.sleep(3)button.click()time.sleep(3)html = self.driver.page_sourceselector = etree.HTML(html)tiebaList = selector.xpath("//div[@id='forum_group_wrap']/a/@href") + selector.xpath('//*[@id="forumscontainer"]//a/@href')print len(tiebaList)return ['http://tieba.baidu.com'+ url for url in set(tiebaList) if url != '#']
获取贴吧地址的方法,我们可以写的灵活点,把这个方法看做是一个接口,具体实现是调用别的方法,修改代码的时候可以很容易的修改,
比如:我这里有2个获取贴吧列表的方法,我只需把self.getList1()改成return self.getList2()
为什么这么做呢,主要是我觉得我们关注的贴吧一般都是固定,贴吧的地址也是固定的,所以我写了个方法把贴吧的地址直接爬取到本地,需要的时候更新一下就好,下次可以直接从本地读取地址而不需要再爬取地址了。
def getBaList(self):'''这里是获取贴吧地址的方法,返回的是一个列表这里发现我写的这个方法,又调用了另一个方法,这其实是一种灵活的写法,因为可以把这个方法看做是一个接口,具体实现是调用别的方法,修改代码的时候可以很容易的修改,比如:我这里有2个获取贴吧列表的方法,我只需把self.getList1()改成return self.getList2():return:'''return self.getList1()# return self.getList2()def getList1(self):'''获取关注的贴吧的地址列表:return:'''button = self.driver.find_element_by_xpath('//*[@id="forum_group_wrap"]/span/span[1]')time.sleep(3)button.click()time.sleep(3)html = self.driver.page_sourceselector = etree.HTML(html)tiebaList = selector.xpath("//div[@id='forum_group_wrap']/a/@href") + selector.xpath('//*[@id="forumscontainer"]//a/@href')print len(tiebaList)return ['http://tieba.baidu.com'+ url for url in set(tiebaList) if url != '#']def getList2(self):l=[]with open('tiebaList.txt','r') as f:for line in f:l.append(line.strip())return ldef saveBaList(self):'''把关注的贴吧地址列表保存到本地,这样就用每次都爬取地址了:return:'''with open('tiebaList.txt','w') as f:for list in self.getList1():f.write( list+'\n')
2.3遍历贴吧地址点击签到
这个就很简单了
def signIn(self):'''循环贴吧地址,签到:return:'''driver=self.drivertiebaList = self.getBaList()time.sleep(2)for tiebaUrl in tiebaList:driver.get(tiebaUrl)time.sleep(2)driver.find_element_by_xpath('//*[@id="signstar_wrapper"]/a').click()time.sleep(2)
3完整代码
#coding=utf-8
import time
from selenium import webdriver
from lxml import etreeclass tiebaSpider():def __init__(self,url):'''初始化:param url:'''self.url=urldriver = webdriver.Chrome()self.driver=driverdriver.delete_all_cookies()driver.get(url)html = driver.page_sourceself.html=htmltime.sleep(1)selector = etree.HTML(html)self.selector=selectordef logIn(self,useName,passWord):'''登录模块,需要用户名和密码:param useName::param passWord::return:'''driver=self.drivertime.sleep(2)driver.find_element_by_xpath('//*[@id="com_userbar"]/ul/li[4]/div/a').click()time.sleep(2)driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__footerULoginBtn"]').click()time.sleep(2)driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__userName"]').send_keys(useName)time.sleep(2)driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__password"]').send_keys(passWord)time.sleep(2)driver.find_element_by_xpath('//*[@id="TANGRAM__PSP_10__submit"]').click()time.sleep(2)def signIn(self):'''循环贴吧地址,签到:return:'''driver=self.drivertiebaList = self.getBaList()time.sleep(2)for tiebaUrl in tiebaList:driver.get(tiebaUrl)time.sleep(2)driver.find_element_by_xpath('//*[@id="signstar_wrapper"]/a').click()time.sleep(2)def getBaList(self):'''这里是获取贴吧地址的方法,返回的是一个列表这里发现我写的这个方法,又调用了另一个方法,这其实是一种灵活的写法,因为可以把这个方法看做是一个接口,具体实现是调用别的方法,修改代码的时候可以很容易的修改,比如:我这里有2个获取贴吧列表的方法,我只需把self.getList1()改成return self.getList2():return:'''# return self.getList1()return self.getList2()def getList1(self):'''获取关注的贴吧的地址列表:return:'''button = self.driver.find_element_by_xpath('//*[@id="forum_group_wrap"]/span/span[1]')time.sleep(3)button.click()time.sleep(3)html = self.driver.page_sourceselector = etree.HTML(html)tiebaList = selector.xpath("//div[@id='forum_group_wrap']/a/@href") + selector.xpath('//*[@id="forumscontainer"]//a/@href')print len(tiebaList)return ['http://tieba.baidu.com'+ url for url in set(tiebaList) if url != '#']def getList2(self):l=[]with open('tiebaList.txt','r') as f:for line in f:l.append(line.strip())return ldef saveBaList(self):'''把关注的贴吧地址列表保存到本地,这样就用每次都爬取地址了:return:'''with open('tiebaList.txt','w') as f:for list in self.getList1():f.write( list+'\n')def close(self):'''关掉浏览器:return:'''self.driver.quit()def main():spider = tiebaSpider('http://tieba.baidu.com/home/main?id=7b9be5b08fe69fb3e9a39ee58f8ce9b1bc6f40&fr=userbar&red_tag=n3342692588')spider.logIn('账号','密码')spider.signIn()spider.close()if __name__ == '__main__':main()
代码放在GitHub上,tiebaSignIn
我的GitHub
贴吧一键签到机selenium自动化相关推荐
- python+selenium自动化软件测试
1.1 环境搭建 1.1.1 selenium简介 Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架.它是一款用于运行端到端功能测试的超强工具.您可以使用多个编程语言编写测 ...
- 功能测试——Selenium自动化功能测试
实验目的 (1)学习使用了解Selenium自动化功能测试工具,了解Selenium测试工具的测试模式和过程: (2)掌握使用Selenium录制测试脚本.执行并分析测试脚本. 实验设备 主流PC机一 ...
- python表单切换_python3 selenium自动化 frame表单嵌套的切换方法
在web自动化测试中,测试工程师经常会碰到frame表单嵌套结构,直接定位会报错,我们需要切换表单后才能成功定位. 我拿QQ邮箱登录来作为例子说下frame怎么切换. qq邮箱页面按F12可以看到以下 ...
- python自动化办公都能做什么菜-python+selenium自动化(一)之环境搭建
一.环境选择 python版本:python3.7(64位)下载地址:https://www.python.org/downloads/ (推荐使用官方下载) selenium版本:selenium3 ...
- Docker selenium自动化 - 使用python操作docker,python运行、启用、停用和查询容器实例演示
Docker selenium 自动化 - 使用 Python 操作 docker 运行.启用.停用和查询容器实例演示 第一章:Python 操作 docker ① python 运行 docker ...
- Docker selenium自动化 - 执行程序没反应、不执行原因,强制处理之前失败的进程,“... requests waiting for a slot to be free“问题解决
docker 运行 selenium 自动化发现根本不向下走了. 访问 Grid 控制台发现提示 3 requests waiting for a slot to be free. 原因是之前执行失败 ...
- Docker selenium自动化 - Python调用容器实例跑自动化查天气实例演示,docker selenium自动化环境部署过程
Docker selenium自动化 - 环境部署与 Python 自动化运行实战演示 第一章:docker selenium 环境部署 ① 下载 selenium 镜像 ② 容器 selenium ...
- Docker selenium自动化 - 修改/dev/shm路径大小实例演示,“session deleted because of page crash“问题解决
Docker 执行 selenium 自动化过程报错信息: selenium.common.exceptions.WebDriverException: Message: unknown error: ...
- Python+selenium 自动化-mac下安装配置chrome驱动方法
我的 Python 版本有两个,先通过 which 看一下对应版本的位置. 然后找到 python 安装目录里的 bin 文件夹,把对应的驱动放里面就好了. 如果不知道怎么匹配对应 chrome 版本 ...
- Python+selenium 自动化-基本环境搭建,调用selenium库访问百度查询天气实例演示
Python+selenium 自动化 第一章:基本环境搭建 ① 安装 selenium 库 ② 下载对应版本的浏览器驱动 ③ 调用百度查天气演示 第一章:基本环境搭建 ① 安装 selenium 库 ...
最新文章
- Scrum Master是什么?Scrum Master的职责是什么?和PM又有哪些区别?
- 干货|十大产业方向深度解析!《2020科技产业趋势报告》
- monkey自定义脚本实践
- python开发工具管理系统_Python开发桌面软件文档及网址管理工具,强迫症的福音...
- Cisco VTP protocol 实验笔记
- 培训ui设计要学编程吗?
- day01 python入门之路
- vasp服务器中断,vasp优化结构没提示直接中断
- Visio2013 Professional专业版密钥
- 《图论及其应用》学习笔记(树)
- 国密 java springboot 实现 maven依赖 SM2 SM3 SM4 介绍及示例代码 技术专家
- 嵌入式课程 之 霍尔传感器(编码器)实验
- excel画正态分布与T分布
- VS2019项目自动包含bin或obj文件夹的问题
- 树莓派视觉跟踪小车_树莓派智能小车结合摄像头opencv进行物体追踪
- 五步打造APP节日主题设计:以Lofter新年图标设计为例
- android studio DDMS debug process 无法激活,小虫子灰色
- GIt远程仓库pull拉取代码
- win10怎么用计算机算进制,Win10系统计算器如何转换进制-win10系统下各进制转换的方法 - 河东软件园...
- java arraylist 无序_关于Java:按字母顺序排序arraylist(不区分大小写)