Skip to content

zero5652pzj/PythonDemo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

很高兴遇见你😄欢迎来看我随手写的小Demo

前言

闲来无事,写了三个小Demo,主要用到Python和Selenium,下面是相关版本信息。

软件名称 版本信息
Python 3.8
Selenium 3

需要注意Selenium2和Selenium3之间,有些方法使用上存在这差异,比如切换窗口的方法。

Selenium2 Selenium3
switch_to_alert() switch_to.alert.accept()
switch_to_window() switch_to.window()

三个demo分别是:

  • 使用新浪微博登录百度,并进入贴吧发帖子;
  • 爬取图片网站的图片,并下载到指定文件夹中;
  • 登录小说网站,根据我们需求输入名称,想看的章节,并下载该章节;

​ 我写demo使用的框架主要思想是把逻辑层和数据层分离,通用的方法写一个基类,写业务流程的时候只要继承基类,根据步骤调用基类里的方法,这样可以减少大量重复的代码的敲打。而且相对容易维护,出错也容易定位。

​ 工具类的方法单独放到utis文件夹中。数据也可以分离出来,只要把流程逻辑写好,所有的数据按类写进配置文件里并向逻辑层传参即可。报告自动在reports文件夹内生成。还有日志打印。说到日志,很尴尬😒我写的demo存在健壮性问题,还需要针对健壮性进一步优化。脑海中构思了一些功能emmmm...随手写的,后续看情况会添加的。

​ 万变不离其宗,移动端的自动化或者接口自动化都可以用类似的方法框架。monkeyrunner和Appium的代码看过,其实和Selenium的主要思想是相通的。掌握一种可以很快入手其他的工具。比喻的话,python是大脑,工具是四肢。

​ 一直有个想法,利用django把网页、移动端、接口自动化集成。把所有方法二次封装,不需要写一大堆的代码,方便其他不会编码人员使用。

Demo

Demo1(登录百度发帖)

在该demo中,我使用PO模型。pagedemo1目录下baidupage.py写的是整个操作逻辑代码,在根目录下runbaidu.py则根据业务调用page页面的代码,并传入参数,实现数据与业务逻辑层分离。在runbaidu.py代码与unittest单元测试模块结合,并在reports目录下生成报告。

登录百度我用是新浪微博登录,打开的是新窗口,注意窗口切换即可。需要注意,我留出来了更改帐号密码的入口。可以在data文件夹下的baidu.ini里进行配置。配置方法如下:

#在写帐号密码的时候,不要加任何单引号或者双引号
#至于安全您可放心,并不会窃取,可看代码检验
[account]
username=yourname 
password=123456

主流程:

  1. 打开百度页面;
  2. 鼠标移动到设置,进行调整并保存设置;
  3. 点击关闭保存弹窗;
  4. 点击登录;
  5. 选择新浪登陆;
  6. 切换到弹出的新浪登陆窗口;
  7. 输入帐号密码并确认;
  8. 切换到百度初始页面(已登录状态);
  9. 点击贴吧进入;
  10. 输入‘python’,进入python吧;
  11. 选择置顶帖子进入;
  12. 弹出窗口要求输入内容;
  13. 输入完内容确定,自动发帖,并关闭当前页面;
  14. 最后关闭driver。

其实,这个属于半自动,在发帖的时候,我使用GUI弹窗要求输入内容。这样的用意是不想固定回复的内容。

Demo2(爬图片)

爬图片是很简单的,需要用requests库、parsel库。

requests库不需要多做介绍,parsel库在 页面元素定位相当好用的模块。

而且,使用方法也简单易学。主要用到css定位、xpath定位和正则。

Demo3(爬小说)

爬小说和图片都是类似的,只是,爬小说的时候我做了弹窗处理。在搜索指定章节的时候,使用link_text()方法不易定位到元素,很不稳定。个人还是喜欢使用css,速度快效率高。搜索指定章节偏大的话,循环查找时间也是问题。不过,简单的实现了搜索功能。最好是可以把所有的章节的标题和连接、内容保存到数据库中,搜寻的速度嗖嗖的。在代码健壮性方面还需要做优化。主流程:

  1. 打开小说网站;
  2. 弹窗提示输入搜索小说名称;
  3. 点击搜索;
  4. 进入小说详情页;
  5. 弹窗提示要看最新的章节还是指定章节,或者退出;
  6. 选择后进入章节页;
  7. 切换窗口;
  8. 下载当前小说内容到指定文件夹中;
  9. 关闭页面;
  10. 退出driver。

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published