Slenium入门
selenium 为浏览器测试框架,可以调用浏览器webdriver模拟浏览器操作
360打开Chrome:
from selenium import webdriver from selenium.webdriver.chrome.options import Options url = “ ” exe_data = r'C:\Users\lsk17\AppData\Local\360Chrome\Chrome\Application\360chrome.exe' # 浏览器根目录所在地 chrome_options = Options() chrome_options.binary_location = exe_data browser = webdriver.Chrome(chrome_options=chrome_options) browser.get(url)
html = browser.page_source # 获得页面源码
等待信息出现:
from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait # 1. 强制等待 第一种也是最简单粗暴的一种办法就是强制等待sleep(xx) # 2. 隐性等待 第二种办法叫隐性等待,implicitly_wait(xx) # 需要特别说明的是:隐性等待对整个driver的周期都起作用,所以只要设置一次即可,我曾看到有人把隐性等待当成了sleep在用,走哪儿都来一下… # 3. 显性等待 第三种办法就是显性等待,WebDriverWait,配合该类的until()和until_not()方法,就能够根据判断条件而进行灵活地等待了。 from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC from selenium.webdriver.support.wait import WebDriverWait try: WebDriverWait(driver, 20, 0.5).until(EC.presence_of_element_located(By.LINK_TEXT, 'CSDN')) print driver.find_element_by_link_text('CSDN').get_attribute('href') finally: driver.close()
EC.presence_of_element_located EC.text_to_be_present_in_element
在网页中获取信息:
element = driver.find_element_by_id() element = driver.find_element_by_name() element_list = driver.find_elements_by_id() element = driver.find_elements_by_name() element = driver.find_element_by_xpath("//input[@id="passwd-id"]") element = driver.find_elements_by_xpath("//div[@id="passwd-id"]")
滑动滚动条:
#将滚动条移动到页面的底部 js="var q=document.documentElement.scrollTop=100000" driver.execute_script(js) time.sleep(3) #将滚动条移动到页面的顶部 js="var q=document.documentElement.scrollTop=0" driver.execute_script(js) time.sleep(3) #若要对页面中的内嵌窗口中的滚动条进行操作,要先定位到该内嵌窗口,在进行滚动条操作 js="var q=document.getElementById('id').scrollTop=100000" driver.execute_script(js) time.sleep(3)
Chrome_options.add_argument('--headless')设为无头模式,可以不弹出浏览器窗口