一. Python 数据分析
- 基础 廖雪峰
- 利用python进行数据分析 读书笔记 博客园
- 利用Python进行数据分析 第2版 apache
- 利用Python进行数据分析 第2版 github
- 利用Python进行数据分析 第2版 简书
二. Python Selenium driver
conda install selenium
使用anaconda, 下载好后丢入anaconda3\Scripts文件夹下就可以了
- Edge driver:
(1.查看edge 版本; 2.下载driver: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver)
from selenium import webdriver
driver = webdriver.Edge() #Edge
# driver = webdriver.Edge('C:\Program Files (x86)\Microsoft\Edge Dev\Application\msedge.exe') #MsEdge
driver.get("https://www.baidu.com/")
- Chrome
(1.查看Chrome版本; 2.下载driver: http://chromedriver.storage.googleapis.com/index.html)
from selenium import webdriver
#启动浏览器
driver = webdriver.Chrome()
driver.get("https://www.baidu.com/")
- FireFox
(1.查看FireFox版本; 2.下载driver:https://github.com/mozilla/geckodriver/releases
from selenium import webdriver
driver = webdriver.Firefox()
driver.get("https://www.baidu.com/")
- Safari
from selenium import webdriver
driver = webdriver.Safari()
driver.get("https://www.baidu.com/")
参考: Selenium+WebDriver 各浏览器驱动下载与使用
1.表单填充
# 找到用户名输入用户名
user = drive.find_element_by_name("LoginForm[username]")
user.send_keys(username)
# 找到密码输入密码
pwd=drive.find_element_by_id("LoginForm_password")
pwd.send_keys(password)
# 点击登录按钮实现登录
drive.find_element_by_class_name("login_btn").click()
2.窗口句柄: 就是浏览器上方每一个Tab名字
#获取当前窗口所有句柄
handles = drive.window_handles
#通过句柄 切换到第1个标签页
drive.switch_to.window(handles[0])
"""操作完成"""
#关闭当前窗口
driver.close()
3.url加载和获取
#url加载
drive.get(url)
# 获取当前页面url并断言
currentPageUrl = driver.current_url
#4.cookie处理
driver.get("http://www.baidu.com")
cookier = {'name':'foo','value':'bar'}
driver.add_cookie(cookie)#添加cookie信息
driver.get_cookies()#获取cookie信息
#等待方式: 现在很多网站采用 Ajax技术无法确定网页元素什么时候能被完全加载所以网页元素的选取比较困难,
# 此时就需要设置等待(等待网页加载完成)
#1.显式等待:条件触发式等待,直到设置的某一条件达成时才会继续执行.可以设置超时时间,
# 如果超过超时时间元素依然没被加载,就会抛出异常
#selenium提供了一些内置的用于显示等待的方法,位于expected_conditions类中
from selenium import webdriver
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver = webdriver.Chrome()
driver.get('http://www.baidu.com')
try:
WebDriverWait(self.driver,10).until(EC.presence_of_element_located(By.ID,"LoginForm[username]")) #webDriverWait默认会500ms检测一下元素是否存在
except:
print('%s页面未找到元素'% loc)
#2.隐式等待: 在尝试定位某个元素时,如果没能立刻发现,就等待固定时长,类似于socket超时,默认设置是0秒,即相当于最长等待时长
#在浏览器界面直观感受是:等待直到网页加载完成(地址栏这个地方不是× 变成如下)时继续执行,网页加载超过设置等待时长才报错使用方法
from selenium import webdriver
driver = webdriver.Chrome()
driver.implicitly_wait(1) #设置最大等待时长 1 秒
driver.get('http://www.baidu.com')
driver.find_element_by_id('kw').send_keys('selenium') #输入关键词
driver.find_element_by_id('su').click() # 点击"百度一下"按钮
#3.线程随机休眠
time.sleep(random.uniform(4,5))
#加载应用扩展程序
chrome_options.add_extension(extension_path)
#添加下载路径,不弹框确认
prefs = {'profile.default_content_settings.popups': 0, 'download.default_directory':tmp_path}
chrome_options.add_experimental_option('prefs', prefs)