python 语言 CSV操作以及selenium

1.selenium :是一个自动化测试工具

   在python中的应用为:

selenium  可以模仿浏览器操作,对动态数据进行获取

①动态数据有代码生成,在页面初始化的过程当中是没有页无法获取的,但是可以通过selenium来进行获取

②有些数据是需要登录以后才能获取的,比如说好友列表,评论,消费记录等等

登录以后获取cookie才能进行以上的操作,但是使用selenium以后可以避免人工登录

只需要得到账号和密码即可实现selenium代替登录

selenium的特点:

①有程序控制浏览器进行操作,而不是手动操作浏览器

②程序控制浏览器操作的时候速度非常慢,所以要谨慎使用selenium

③使用selenium控制浏览器的时候需要下载浏览器对应的驱动程序

④selenium为开源免费但是更新速度没有浏览器快不是selenium慢而是浏览器更新太快了

from selenium import webdriver
import time
# 使用网页驱动来运行火狐浏览器
driver =webdriver.Firefox()#创建一个对象
# 通过驱动来执行指定的网页
driver.get('http://www.baidu.com')#用这个对象打开这个网址

# selenium 提供了找到元素的方法 find element by xxxx
# 这些方法全部是用python实现的
# 如果只是想对这个元素进行查找,定位,建议使用
# xpath 或者css selecotor
# 如果需要对找到的内容进行点击等操作
# 建议使用find_element_by_xxx
# find找到 element元素;节点;标签 by 通过

# selenium.common.exceptions.NoSuchElementException: Message: Unable to locate element: [id="kw"]
# 错误原因 :代码执行速度很快但是浏览器响应很慢
# 代码执行到这的时候浏览器里面的元素可能还没有加载完
# 所以报错找不到指定的元素
# time.sleep(0)
# 通过id来找
# driver.find_element_by_id('kw').send_keys('selenium')
# 通过name来找
# driver.find_element_by_name('wd').send_keys('csdn')
# unicode 如果后面有中文 那么前面需要加一个u r
# 错误:'list' object has no attribute 'send_keys'
# driver.find_element_by_class_name('s_ipt').send_keys(u'智游')
# tag_name:标签名字
# driver.find_element_by_tag_name('input')
# selector:选择器
# driver.find_element_by_css_selector('#kw')
# 通过xpath语法定位一个元素
# driver.find_element_by_xpath('//form[@id="form"]/span/input[@id="kw"]')
# link:链接
# driver.find_element_by_link_text('贴吧')

time.sleep(5)
driver.close()

selenium登录

from selenium import webdriver
import  time
driver=webdriver.Firefox()
driver.get('https://i.meishi.cc/login.php?redirect=https%3A%2F%2Fwww.meishij.net%2F')

driver.find_element_by_name('username').send_keys('285356379@qq.com')
driver.find_element_by_class_name('password').send_keys('crd9411084210')
title=driver.find_element_by_id('more_dsf_btn').text
print(title)
# time.sleep(3)
# text获取的是标签之间的文本  而不是填充的内容
# username=driver.find_element_by_name('username').text
# password=driver.find_element_by_class_name('password').text
# print(username)
# print(password)

# driver.find_element_by_name('username').clear()
# driver.find_element_by_class_name('password').clear()
#
# driver.find_element_by_xpath('//div[@class="nl_loginitem"]/input[@class="submit"]').click()

CSV操作

# comma sepreated value  逗号分隔值
import csv

rows = [['张三',14],['李四',24],['王五',34]]
# with open ('code.txt','w')as f
# csv文件在写入的时候 默认每次写入会有一个空行作为分隔
# # 使用newline=''可以将空行去掉
with open('test1.csv','w',newline='') as csv_file:
    write=csv.writer(csv_file)
    for  row in rows:
        #writerow 写入一行数据
        write.writerow(row)
# 读取文件 with open ('code.txt','r')as f:
with open('test1.csv','r')as read_file:
    read=csv.reader(read_file)
    # print(read)
    print([row for row in read])
def write_data():
    columns= int(input('请输入总列数'))
    # print(columns)
    col_list=[]
    while True:
        col_list.append([input('请输入第{}列数据'.format(n+1))for n in range(columns)])
        is_continue=input('是否继续呢?Y/N')
        if is_continue!='Y':
            break
            # continue  跳出本次循环  下次循环继续执行
            # return  结束循环和方法 return后面的代码统统不执行
    print(col_list)
    with open('test2.csv','w',newline='')as csv_file:
        write = csv.writer(csv_file)
        for row in col_list:
            write.writerow(row)
# write_data()
data_dic=[{'name':'xiaochen','age':15},{'name':'chenye','age':25}]
with open('dict.csv','w',newline='')as csv_file:
    keys=[]
    for key in data_dic[0].keys():
        print(key)
        keys.append(key)
        # 写入一个字典到CSV中 fieldnames 设置文本的标题
    write = csv.DictWriter(csv_file,fieldnames=keys)
    # 开始写入标题
    write.writeheader()
    for dict in data_dic:
        write.writerow(dict)

with open('dict.csv','r')as csv_file:
    read=csv.DictReader(csv_file)
    print([row for row in read])

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值