【Selenium + Python】之 Excel、CSV、XML文件读取数据并运用数据百度查询
目录
一、从Excel读取数据进行百度搜索
封装读取方法:
import xlrd
from selenium import webdriver
from selenium.webdriver.common.by import By class rdExcel():
def __init__(self,excel_dir,sheet_name):
self.r = []
self.rd = xlrd.open_workbook(excel_dir)
self.sh = self.rd.sheet_by_name(sheet_name)
#首行设置为key
self.key = self.sh.row_values(0)
#获取总行数
self.rownum = self.sh.nrows
#获取总列数
self.colnum = self.sh.ncols def function(self):
if self.rownum<=1:
print("没有获取到数值")
else:
r = []
j=1
#要执行的行数
for i in range(self.rownum - 1):
s = {}
values = self.sh.row_values(j)
for x in range(self.colnum):
s[self.key[x]] = values[x]
r.append(s)
j+=1
# print(r)
return r if __name__ == '__main__':
a = input("excel_dir:")
b = input("sheet_name:")
data = rdExcel(a,b)
print(data.function())
基本操作:指定单元格读取数据
rd = xlrd.open_workbook("C:\\Users\\ZHANGCH\\Desktop\\test99.xlsx")
sh = rd.sheet_by_name("rdData") value = sh.row_values(1)[0]
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("http://www.baidu.com")
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys(value)
driver.find_element(By.CSS_SELECTOR,"#su").click()
============================================================================
写法进行修改规整,完整获取指定数据进行百度查询:
写法①:
import xlrd
import os
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep base = os.path.dirname(os.path.dirname(__file__))
base_dir = base.replace('/','\\')
file_dir = base_dir + os.sep + "test" + os.sep + "test99.xlsx"
print(file_dir) class test():
def __init__(self,file_dir,sheet_name):
self.rd = xlrd.open_workbook(file_dir)
self.sh = self.rd.sheet_by_name(sheet_name)
self.rows = self.sh.nrows
self.cols = self.sh.ncols def ExcelRd(self):
r = []
for i in range(1,self.rows):
values = self.sh.row_values(i,0,self.cols)
r.append(values)
return r if __name__ == '__main__':
#指定sheet页为:rdData
file_dir = input("路径为:")
sheet_name = input("sheet页为:")
data = test(file_dir,sheet_name).ExcelRd() driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get("https://www.baidu.com") for footballStar in data:
driver.find_element(By.CSS_SELECTOR,"#kw").clear()
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys(footballStar[1])
driver.find_element(By.CSS_SELECTOR,"#su").click()
sleep(5) driver.quit()
写法②:添加截图方法
function.py:
import os def screenshot(driver,img_name):
base = os.path.dirname(os.path.dirname(__file__))
base_dir = base.replace("/","\\")
img_dir = base_dir + os.sep + "20180515作业" + os.sep + "image" + os.sep + img_name + ".png"
driver.get_screenshot_as_file(img_dir)
Excel读取数据.py:
import xlrd
import os
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
from function import screenshot class test(object):
def __init__(self):
self.base = os.path.dirname(os.path.dirname(__file__))
self.base_dir = self.base.replace('/', '\\') def ExcelRd(self):
file_dir = self.base_dir + os.sep + "20180515作业" + os.sep + "test_xlsx.xlsx"
rd = xlrd.open_workbook(file_dir)
sh = rd.sheet_by_name("rdData")
rows = sh.nrows
cols = sh.ncols r = []
for i in range(1,rows):
values = sh.row_values(i,0,cols)
r.append(values)
return r if __name__ == '__main__': data = test().ExcelRd()
driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(10)
driver.get("https://www.baidu.com") for footballStar in data:
fbStar = footballStar[1]
driver.find_element(By.CSS_SELECTOR,"#kw").clear()
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys(fbStar)
driver.find_element(By.CSS_SELECTOR,"#su").click()
sleep(3)
fbStar_xlsx = str("xlsx_" + fbStar)
screenshot(driver,fbStar_xlsx)
sleep(7) driver.quit()
二、从CSV读取数据进行百度搜索
CSV读取数据.py:
import csv
import os
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
from function import screenshot class test(object):
def __init__(self):
base = os.path.dirname(os.path.dirname(__file__))
self.base_dir = base.replace("/","\\") def CSVRd(self):
base_dir = self.base_dir + os.sep + "20180515作业" + os.sep + "test_csv.csv"
opFile = open(base_dir,'r')
rd = csv.reader(opFile) r = []
next(rd,None)
for i in rd:
r.append(i)
return r if __name__ == '__main__': data = test().CSVRd()
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://www.baidu.com")
driver.implicitly_wait(10) for fbStar in data:
fbStar = fbStar[1]
driver.find_element(By.CSS_SELECTOR,"#kw").clear()
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys(fbStar)
driver.find_element(By.CSS_SELECTOR,"#su").click()
sleep(3)
csv_fbStar = str("csv_" + fbStar)
screenshot(driver,csv_fbStar)
sleep(7) driver.quit()
三、从XML读取数据进行登录操作
test_xml文件:
<?xml version="1.0" encoding="utf-8"?>
<info>
<title>博客园登录</title>
<url_dir>https://passport.cnblogs.com/user/signin</url_dir>
<login username="owen_name" password="owen_pwd">登录</login>
</info>
CSV读取数据.py:
import xml.dom.minidom as minidom
# import xml.etree.ElementTree as ele
import os
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep
from function import screenshot base = os.path.dirname(os.path.dirname(__file__))
base_dir = base.replace("/","\\")
file_dir = base_dir + os.sep + "20180515作业" + os.sep + "test_xml.xml" #打开xml文档
dom = minidom.parse(file_dir)
#得到文档元素
root = dom.documentElement
#由于下面getElementsByTagName点不出来方法,手写的
tag1 = root.getElementsByTagName("login")
tag2 = root.getElementsByTagName("url_dir")
tag3 = root.getElementsByTagName("title")
#获得标签属性值
username = tag1[0].getAttribute("username")
password = tag1[0].getAttribute("password")
#获得标签之间的数据
url = tag2[0].firstChild.data
title = tag3[0].firstChild.data driver = webdriver.Chrome()
driver.maximize_window()
driver.get(url)
driver.find_element(By.CSS_SELECTOR,"#input1").clear()
driver.find_element(By.CSS_SELECTOR,"#input1").send_keys(username)
sleep(3)
driver.find_element(By.CSS_SELECTOR,"#input2").clear()
driver.find_element(By.CSS_SELECTOR,"#input2").send_keys(password)
sleep(3)
title = str("xml_" + title)
screenshot(driver,title) driver.quit()
四、附:学习资料
《Python不归路_xml.etree.ElementTree模块》感谢作者:深海一尾鱼
《python读取xml文件》感谢作者:虫师
【Selenium + Python】之 Excel、CSV、XML文件读取数据并运用数据百度查询的更多相关文章
- python解析VOC的xml文件并转成自己需要的txt格式
在进行神经网络训练的时候,自己标注的数据集往往会有数据量不够大以及代表性不强等问题,因此我们会采用开源数据集作为训练,开源数据集往往具有特定的格式,如果我们想将开源数据集为我们所用的话,就需要对其格式 ...
- php xml 文件读取 XMLReader
php xml 文件读取 <?php /** $xmlString = '<xml> <persons count="10"> <person ...
- javascript读取xml文件读取节点数据的例子
分享下用javascript读取xml文件读取节点数据方法. 读取的节点数据,还有一种情况是读取节点属性数据. <head> <title></title> < ...
- xml文件读取到数据库
xml文件读取到数据库 第一步,导包 c3p0,dom4j,jaxen,MySQL-connector 第二步 xml文件,config文件 第三步 javabean 第四步 c3p0的工具类 ...
- C#程序中:如何修改xml文件中的节点(数据)
要想在web等程序中实现动态的数据内容给新(如网页中的Flash),不会更新xml文件中的节点(数据)是远远不够的,今天在这里说一个简单的xml文件的更新,方法比较基础,很适合初学者看的,保证一看就懂 ...
- Excel和XML文件导入
using System;using System.Collections;using System.Collections.Generic;using System.Configuration;us ...
- XML文件读取工具类
/// <summary> /// Author: jiangxiaoqiang /// </summary> public class XmlReader { //===== ...
- Excel关联xml文件
1.新建没传值的xml文件,变量名称自己定义好 2.打开excel,如果之前没有设置过,点击选项 如果当前Excel菜单栏中没有开发工具项,在自定义功能区先勾选上开发选项 3.点右下角的xml映射 弹 ...
- Xml 文件读取
.NET 读取Xml文件,用到XmlDocument类. 1.要获取文档的根: DocumentElement. 2.Attributes :获取 XmlAttributeCollection 包含此 ...
随机推荐
- [BZOJ3569]DZY Loves Chinese II(随机化+线性基)
3569: DZY Loves Chinese II Time Limit: 5 Sec Memory Limit: 64 MBSubmit: 1515 Solved: 569[Submit][S ...
- 动态路由协议(3)--ospf
1.设置pc ip 网关 192.168.1.1 192.168.1.254 192.168.4.1 192.168.4.254 2.设置路由器 (1)设置接口ip Router(config-/ R ...
- flask调试代码更改、模板更改后立即生效
1.app.DEBUG=True时,代码更改后立即生效 2.APP.jinja_env.auto_reload = True时,模板修改后立即生效,无需重启 参考:https://stackoverf ...
- WIN7无法卸载掉中文繁体注音输入法
WIN7无法卸载掉中文繁体注音输入法 不知何时系统里被自动安装了个中文繁体的注音输入法,每次启动都会替换默认的简体搜狗拼音,而且最要命的是在输入法选择栏里面没有出现这个繁体的输入法,而任务栏里却总是有 ...
- Vue样式绑定和事件处理器
一.样式绑定 class 与 style 是 HTML 元素的属性,用于设置元素的样式,我们可以用 v-bind 来设置样式属性. v-bind 在处理 class 和 style 时, 专门增强了它 ...
- [ACM] POJ 1035 Spell checker (单词查找,删除替换添加不论什么一个字母)
Spell checker Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 18693 Accepted: 6844 De ...
- Unity3D导入外部任务模型无法触发鼠标事件解决方案
前几日 在做U3D测试的时候 导入了网上的一个人物模型 但是后来发现无论如何该模型都无法响应诸如:OnMouseDown 这些鼠标事件 又用U3D自带的水管工做了测试 发现不是我系统的问题= = 水管 ...
- 【重点突破】—— 百度地图在React单页面应用中的使用
前言:百度地图是网页中使用地图的常用第三方工具,这里结合React项目中学到的应用场景总结一些使用要点. 一.在网页中嵌入百度地图 搜百度地图开放平台,注册百度开发者账号 控制台:查看应用.创建应用( ...
- 2017.6.27 jdbc基本使用
参考来自:http://www.runoob.com/w3cnote/jdbc-use-guide.html 1.jdbc的执行流程 JDBC API 允许用户访问任何形式的表格数据,尤其是存储在关系 ...
- 原来,多年以来,我一直是个curl/CRUD程序员
curl,就是create,update,remove,list的首字母简写.说是CRUD似乎更流行些,不过无所谓,知道是一个意思就好. curl程序员,就是增改删查程序员,中文说增删改查更加顺口. ...