-- coding: utf-8 --
"""
selenium 使用
"""
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
'''
browser=webdriver.Chrome()
try:
browser.get("https://www.baidu.com")
input=browser.find_element_by_id('kw')
input.send_keys(u'星游记')
input.send_keys(Keys.ENTER)
wait=WebDriverWait(browser,10)
wait.until(EC.presence_of_all_elements_located((By.ID,'content_left')))
print(browser.current_url)
print(browser.get_cookies())
print(browser.page_source)
finally:
browser.close()
声明浏览器对象
from selenium import webdriver
browser=webdriver.Chrome()#chrome浏览器控制器
谷歌无头浏览器
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
这个是一个用来控制chrome以无界面模式打开的浏览器
创建一个参数对象,用来控制chrome以无界面的方式打开
chrome_options = Options()
后面的两个是固定写法 必须这么写
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
驱动路径 谷歌的驱动存放路径
path = r'C:\pacong_data\day3\chromedriver.exe'
创建浏览器对象
browser = webdriver.Chrome(chrome_options=chrome_options)
访问页面
url='https://www.baidu.com'
browser.get(url)
source=browser.page_source
查单个节点
browser.get('https://www.taobao.com')
input_first=browser.find_element_by_id('q')
input_second=browser.find_element_by_css_selector('#q')
input_third=browser.find_element_by_xpath('//*[@id="q"]')
print(input_first,input_second,input_third)
或通过By定位
在使用过程种可以根据实际的情况去选择对应的的定位方式,我们可以用By来设置定位策略,具体语法如下:
browser.find_element(By.ID,"kw")
browser.find_element(By.NAME,"wd")
browser.find_element(By.CLASS_NAME,"s_ipt")
browser.find_element(By.TAG_NAME,"input")
browser.find_element(By.LINK_TEXT,u"新闻")
browser.find_element(By.PARTIAL_LINK_TEXT,u"新")
browser.find_element(By.XPATH,"//*[@class='bg s_btn']")
browser.find_element(By.CSS_SELECTOR,"span.bg s_btn_wr>input#su")
查多个节点
lis=browser.find_elements_by_xpath('//div/div/div/ul/li/a')
print(lis)
节点交互
import time
browser=webdriver.Chrome()
browser.get('https://www.taobao.com')
input=browser.find_element_by_id('q')
input.send_keys('VR')
time.sleep(2)
input.clear()
input.send_keys('红米note7pro')
button=browser.find_element_by_class_name('btn-search')
button.click()
获取网页的源码
html=browser.page_source
获取节点信息
browser=webdriver.Chrome()
browser.get('https://www.zhihu.com/explore')
获取属性
logo=browser.find_element_by_id('zh-top-link-logo')
print(logo)
print(logo.get_attribute('class'))#获得标签class属性的值
获取文本值
input=browser.find_element_by_xpath('//*[@id="zh-top-nav-explore"]/a')
print(input.text)
获取id。位置,标签名和大小
print(input.id)
print(input.location)
print(input.tag_name)
print(input.size)
延时等待
隐式等待
browser=webdriver.Chrome()
browser.implicitly_wait(10)#当一开始时若没有找到目标节点,则再等待10s,再找找不到,就报错
browser.get('https://www.zhihu.com/explore')
input=browser.find_element_by_class_name('zu-top-add-question')
print(input)
显示等待
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
browser=webdriver.Chrome()
browser.get('https://www.taobao.com/')
wait=WebDriverWait(browser,10)#为指定最大等待时间10s
inpu=wait.until(EC.presence_of_element_located((By.ID,'q')))#找到即退出等待时间
button=wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR,'btn-search')))
print(input,button)
cookies处理
browser=webdriver.Chrome()
browser.get('https://www.zhihu.com/explore')
print(browser.get_cookies())
browser.add_cookie({'name':'name','domain':'www.zhihu.com','value':'germey'})
print(browser.get_cookies())
browser.delete_all_cookies()
print(browser.get_cookies())
'''
补充:
options = webdriver.ChromeOptions()
1.添加缓存路径os.getcwd() 可获得当前目录
options.add_argument('--disk-cache-dir='+os.getcwd()+'\cache')
2.打开谷歌浏览器(随机UA)
options.add_argument('--user-agent='+random.choice(ua))
3.设置代理IP
options.add_argument('--proxy-server={0}'.format(ip))
4.以开发者模式
options.add_experimental_option('excludeSwitches', ['enable-automation'])
5.创建驱动
driver = webdriver.Chrome(executable_path='chromedriver',options=options)
6.全屏
driver.maximize_window()
网友评论