感觉有一段时间没有发博客了,今天1024,发一篇福利吧。贴吧签到机,利用selenium模拟浏览器登录,然后根据你关注的贴吧进行签到。

1.首先需要安装python2.7,Chrome浏览器,selenium,lxml

过程略

2.要上代码了

具体实现过程:

  1. 登录
  2. 获取访问贴吧的地址
  3. 写个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自动化相关推荐

  1. python+selenium自动化软件测试

    1.1 环境搭建 1.1.1 selenium简介 Selenium 是用于测试 Web 应用程序用户界面 (UI) 的常用框架.它是一款用于运行端到端功能测试的超强工具.您可以使用多个编程语言编写测 ...

  2. 功能测试——Selenium自动化功能测试

    实验目的 (1)学习使用了解Selenium自动化功能测试工具,了解Selenium测试工具的测试模式和过程: (2)掌握使用Selenium录制测试脚本.执行并分析测试脚本. 实验设备 主流PC机一 ...

  3. python表单切换_python3 selenium自动化 frame表单嵌套的切换方法

    在web自动化测试中,测试工程师经常会碰到frame表单嵌套结构,直接定位会报错,我们需要切换表单后才能成功定位. 我拿QQ邮箱登录来作为例子说下frame怎么切换. qq邮箱页面按F12可以看到以下 ...

  4. python自动化办公都能做什么菜-python+selenium自动化(一)之环境搭建

    一.环境选择 python版本:python3.7(64位)下载地址:https://www.python.org/downloads/ (推荐使用官方下载) selenium版本:selenium3 ...

  5. Docker selenium自动化 - 使用python操作docker,python运行、启用、停用和查询容器实例演示

    Docker selenium 自动化 - 使用 Python 操作 docker 运行.启用.停用和查询容器实例演示 第一章:Python 操作 docker ① python 运行 docker ...

  6. Docker selenium自动化 - 执行程序没反应、不执行原因,强制处理之前失败的进程,“... requests waiting for a slot to be free“问题解决

    docker 运行 selenium 自动化发现根本不向下走了. 访问 Grid 控制台发现提示 3 requests waiting for a slot to be free. 原因是之前执行失败 ...

  7. Docker selenium自动化 - Python调用容器实例跑自动化查天气实例演示,docker selenium自动化环境部署过程

    Docker selenium自动化 - 环境部署与 Python 自动化运行实战演示 第一章:docker selenium 环境部署 ① 下载 selenium 镜像 ② 容器 selenium ...

  8. Docker selenium自动化 - 修改/dev/shm路径大小实例演示,“session deleted because of page crash“问题解决

    Docker 执行 selenium 自动化过程报错信息: selenium.common.exceptions.WebDriverException: Message: unknown error: ...

  9. Python+selenium 自动化-mac下安装配置chrome驱动方法

    我的 Python 版本有两个,先通过 which 看一下对应版本的位置. 然后找到 python 安装目录里的 bin 文件夹,把对应的驱动放里面就好了. 如果不知道怎么匹配对应 chrome 版本 ...

  10. Python+selenium 自动化-基本环境搭建,调用selenium库访问百度查询天气实例演示

    Python+selenium 自动化 第一章:基本环境搭建 ① 安装 selenium 库 ② 下载对应版本的浏览器驱动 ③ 调用百度查天气演示 第一章:基本环境搭建 ① 安装 selenium 库 ...

最新文章

  1. Scrum Master是什么?Scrum Master的职责是什么?和PM又有哪些区别?
  2. 干货|十大产业方向深度解析!《2020科技产业趋势报告》
  3. monkey自定义脚本实践
  4. python开发工具管理系统_Python开发桌面软件文档及网址管理工具,强迫症的福音...
  5. Cisco VTP protocol   实验笔记
  6. 培训ui设计要学编程吗?
  7. day01 python入门之路
  8. vasp服务器中断,vasp优化结构没提示直接中断
  9. Visio2013 Professional专业版密钥
  10. 《图论及其应用》学习笔记(树)
  11. 国密 java springboot 实现 maven依赖 SM2 SM3 SM4 介绍及示例代码 技术专家
  12. 嵌入式课程 之 霍尔传感器(编码器)实验
  13. excel画正态分布与T分布
  14. VS2019项目自动包含bin或obj文件夹的问题
  15. 树莓派视觉跟踪小车_树莓派智能小车结合摄像头opencv进行物体追踪
  16. 五步打造APP节日主题设计:以Lofter新年图标设计为例
  17. android studio DDMS debug process 无法激活,小虫子灰色
  18. GIt远程仓库pull拉取代码
  19. win10怎么用计算机算进制,Win10系统计算器如何转换进制-win10系统下各进制转换的方法 - 河东软件园...
  20. java arraylist 无序_关于Java:按字母顺序排序arraylist(不区分大小写)

热门文章

  1. 计算机软件开发即征即退,自行开发软件产品增值税实行即征即退政策
  2. sqlmap-sql注入检测
  3. Allpairs正交工具的安装、使用及错误提示解决办法
  4. word参考文献编号、引用、修改
  5. MATLABR2018自学一本通笔记
  6. 《指数型组织》学习总结
  7. HTML 合并单元格(学生成绩管理表格)
  8. php做文章伪原创,php简单的伪原创程序
  9. 【IMX6UL开发板试用体验】上手试用与资源使用
  10. excel数据分析——贝叶斯分析预估