使用po模式读取豆瓣读书最受关注的书籍,取出标题、评分、评论、题材 按评分从小到大排序并输出到txt文件中
#coding=utf-8
from time import sleep
import unittest
from selenium import webdriver
from selenium.webdriver import Remote
from selenium.webdriver.common.by import By#元素定位
import sys
def browser():#启动浏览器驱动
'''
driver = Remote(command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities={'platform':'ANY',
'browserName':'chrome',
'version':'',
})'''
driver = webdriver.Ie()
return driver
class MyTest(unittest.TestCase):#框架
def setUp(self):
print("开始执行用例!")
self.driver = browser()
self.driver.implicitly_wait(10)
self.driver.maximize_window()
def tearDown(self):
self.driver.quit()
print('用例执行结束!')
class Page(object):#基础类
'''
页面基础类,用于所有页面的继承
'''
bbs_url = 'https://book.douban.com/'
def __init__(self,selenium_driver,base_url=bbs_url,parent=None):#初始化
self.base_url = base_url
self.driver = selenium_driver
self.timeout = 30
self.parent = parent
def on_page(self):#断言url是否相等
return self.driver.current_url == (self.base_url + self.url)
def _open(self,url):
url = self.base_url + url
self.driver.get(url)
assert self.on_page(),'获取的url和当前url不匹配.url:%s' % url
def open(self):#打开浏览器
self._open(self.url)
def find_element(self,*loc):#单个元素定位
return self.driver.find_element(*loc)
def find_elements(self,*loc):#多个元素定位
return self.driver.find_elements(*loc)
class Douban_film(Page):#页面对象封装
u'''豆瓣读书排序'''
url = '/'
#元素定位
bbs_booknum_loc = (By.XPATH,'//li/div[2]/p[1]/span[2]')#评分
bbs_bookname_loc = (By.XPATH,'//li/div[2]/h4/a')#书名
bbs_bookauther_loc = (By.XPATH,'//li/div[2]/p[2]')#作者
bbs_booktype_loc = (By.XPATH,'//li/div[2]/p[3]')#类型
bbs_bookcomments_loc = (By.XPATH,'//li/div[2]/p[5]')#评论
#元素封装
def bbs_bookname(self):#豆瓣评分
_input = self.driver.find_elements(*self.bbs_bookname_loc)# 选择页面上所有的tag name 为input 的元素
bookname = []
for i in _input:
bookname.append(i.text)#取出值并添加到数组
else:
sleep(1)
return bookname
def bbs_booknum(self):#豆瓣评分
_input = self.driver.find_elements(*self.bbs_booknum_loc)# 选择页面上所有的tag name 为input 的元素
booknum = []
for i in _input:
booknum.append(i.text)#取出值并添加到数组
else:
sleep(1)
return booknum
def bbs_bookauther(self):#作者
_input = self.driver.find_elements(*self.bbs_bookauther_loc)# 选择页面上所有的tag name 为input 的元素
bookauther = []
for i in _input:
bookauther.append(i.text)#取出值并添加到数组
else:
sleep(1)
return bookauther
def bbs_booktype(self):#类型
_input = self.driver.find_elements(*self.bbs_booktype_loc)# 选择页面上所有的tag name 为input 的元素
bookautype = []
for i in _input:
bookautype.append(i.text)#取出值并添加到数组
else:
sleep(1)
return bookautype
def bbs_bookcomments(self):#评论
_input = self.driver.find_elements(*self.bbs_bookcomments_loc)# 选择页面上所有的tag name 为input 的元素
bookaucomments = []
for i in _input:
bookaucomments.append(i.text)#取出值并添加到数组
else:
sleep(1)
return bookaucomments
def out_node(self):#排序
list1 = self.bbs_booknum()
list2 = self.bbs_bookname()
list3 = self.bbs_bookauther()
list4 = self.bbs_booktype()
list5 = self.bbs_bookcomments()
list = [[a,b,c,d,e] for a,b,c,d,e in zip(list1,list2,list3,list4,list5)]
team = list[:]
team.sort()
print('从小到大排序:%s'%team)
return team
def writetxt(self):#写入txt文件
a = self.out_node()
f1 = open('b.txt','w',encoding='utf-8')#写入文件编码格式,不写的话有时候会导致解析错误
for i in a:#循环读取内嵌列表
#if isinstance(i,list):#判断是否是一个列表
print(i)#分别打印内嵌列表里的列表
f1.writelines(i)#写入txt文件
f1.write('\n')#写入文件时换行
f1.close()
class test_Douban_film(MyTest):
u'''豆瓣读书排序'''
def test1(self):
u'''豆瓣评分按降序排列并保存到txt文件'''
p1 = Douban_film(self.driver)
p1.open()
p1.writetxt()
if __name__ == '__main__':
unittest.main()
使用po模式读取豆瓣读书最受关注的书籍,取出标题、评分、评论、题材 按评分从小到大排序并输出到txt文件中的更多相关文章
- 按行读取TXT文件中的内容
public Dictionary<int, string> GetDicFromLog() { try { StreamReader sr = new StreamReader(file ...
- 从txt文件中读取数据放在二维数组中
1.我D盘中的test.txt文件内的内容是这样的,也是随机产生的二维数组 /test.txt/ 5.440000 3.4500006.610000 6.0400008.900000 3.030000 ...
- 读取同一文件夹下多个txt文件中的特定内容并做统计
读取同一文件夹下多个txt文件中的特定内容并做统计 有网友在问,C#读取同一文件夹下多个txt文件中的特定内容,并把各个文本的数据做统计. 昨晚Insus.NET抽上些少时间,来实现此问题,加强自身的 ...
- SQL C# nvarchar类型转换为int类型 多表查询的问题,查询结果到新表,TXT数据读取到控件和数据库,生成在控件中的数据如何存到TXT文件中
在数据库时候我设计了学生的分数为nvarchar(50),是为了在从TXT文件中读取数据插入到数据库表时候方便,但是在后期由于涉及到统计问题,比如求平均值等,需要int类型才可以,方法是:Conver ...
- Java中读取txt文件中中文字符时,出现乱码的解决办法
这是我写的一个Java课程作业时,遇到的问题. 问题描述: 我要实现的就是将txt文件中的内容按一定格式读取出来后,存放在相应的数组. 我刚开始运行时发现,英文可以实现,但是中文字符就是各种乱码. 最 ...
- Flex读取txt文件中的内容(三)
Flex读取txt文件中的内容 1.设计源码 LoadTxt.mxml: <?xml version="1.0" encoding="utf-8"?> ...
- Flex读取txt文件中的内容(二)
Flex读取txt文件中的内容 自动生成的文件 LoadTxt-app.xml: <?xml version="1.0" encoding="utf-8" ...
- Flex读取txt文件中的内容(一)
Flex读取txt文件中的内容 phone.txt: 13000003847 13000003848 13000003849 13000003850 13000003851 13000003852 1 ...
- Flex读取txt文件中的内容报错
Flex读取txt文件中的内容 1.具体错误如下 2.错误原因 读取文件不存在 var file:File = new File(File.applicationDirectory.nativePat ...
随机推荐
- dotNET跨平台相关文档整理
一直在从事C#开发的相关技术工作,从C# 1.0一路用到现在的C# 6.0, 通常情况下被局限于Windows平台,Mono项目把我们C#程序带到了Windows之外的平台,在工作之余花了很多时间在M ...
- 你知道C#中的Lambda表达式的演化过程吗?
那得从很久很久以前说起了,记得那个时候... 懵懂的记得从前有个叫委托的东西是那么的高深难懂. 委托的使用 例一: 什么是委托? 个人理解:用来传递方法的类型.(用来传递数字的类型有int.float ...
- 菜鸟学Struts2——Actions
在对Struts2的工作原理学习之后,对Struts2的Action进行学习.主要对Struts2文档Guides中的Action分支进行学习,如下图: 1.Model Driven(模型驱动) St ...
- Ajax 概念 分析 举例
Ajax是结合了访问数据库,数据访问,Jquery 可以做页面局部刷新或者说是页面不刷新,我可以让页面不刷新,仅仅是数据的刷新,没有频繁的刷页面,是现在比较常用的一种方式做页面那么它是怎么实现页面无刷 ...
- 【原】FMDB源码阅读(一)
[原]FMDB源码阅读(一) 本文转载请注明出处 —— polobymulberry-博客园 1. 前言 说实话,之前的SDWebImage和AFNetworking这两个组件我还是使用过的,但是对于 ...
- jQuery学习之路(7)- 用原生JavaScript实现jQuery的某些简单功能
▓▓▓▓▓▓ 大致介绍 学习了妙味,用原生的JavaScript实现jQuery中的某些部分功能 定义自己的函数库lQuery ▓▓▓▓▓▓ $()选择器的实现 jQuery是面向对象的,所以自己编写 ...
- 【原创分享·微信支付】 C# MVC 微信支付教程系列之公众号支付
微信支付教程系列之公众号支付 今天,我们接着讲微信支付的系列教程,前面,我们讲了这个微信红包和扫码支付.现在,我们讲讲这个公众号支付.公众号支付的应用环境常见的用户通过公众号,然后再通 ...
- GPG终极指南(加密/签名)
我们平时都听过非对称加密,公钥和私钥,签名验证,但这些证书都是怎么得到的呢?本篇文章会解答这些问题. 背景介绍 加密的一个简单但又实用的任务就是发送加密电子邮件.多年来,为电子邮件进行加密的标准一直是 ...
- AbpZero--1.如何开始
1.加群 群号:104390185,下载这个文件并解压 用VS2015打开aspnet-zero-1.9.0.1 2.修改Web项目web.config连接字符串 <add name=" ...
- java8中lambda表达式的应用,以及一些泛型相关
语法部分就不写了,我们直接抛出一个实际问题,看看java8的这些新特性究竟能给我们带来哪些便利 顺带用到一些泛型编程,一切都是为了简化代码 场景: 一个数据类,用于记录职工信息 public clas ...