selenium是一个网页自动化测试工具,使用它可以操作浏览器来模拟人操作浏览器的行为
用于模拟登录,对于一些需要登录才能获取到数据的网页,一般如果采用分析参数来破解的话,需要耗费大量的时间和精力进行网站的登录破解,而如果使用selenium的话,就可以完全模拟人的登录行为来进行网站的登录,就不需要分析参数进行网站的破解
它是通过驱动浏览器进行网页的登录,或者是获取网页的信息
由于selenium是驱动浏览器进行数据的爬取,而浏览器的打开,对网页发起请求,渲染网页都需要耗费大量的时间,所以一般情况下不使用selenium进行网站数据的爬取,除非无法通过分析请求的方式进行登录网站,或者网站是动态的,页面源代码中获取不到数据的这种情况下,才考虑使用selenium来进行爬取
selenium提供的一些元素定位和查找的方法都是用纯python实现的,效率比较低
selenium是免费开源的,支持很多的主流浏览器,IE,Chrome,Opera,Safari等
from selenium import webdriver # 第一步:创建一个浏览器对象 browser = webdriver.Chrome() # 第二步:使用浏览器发起请求 browser.get('https://www.baidu.com') # 获取网页的源代码 print(browser.page_source) # 获取此次请求的cookie信息 print(browser.get_cookies()) # 退出浏览器 browser.quit()
from selenium import webdriver # 1.通过id值匹配 browser = webdriver.Chrome() browser.get('https://www.baidu.com') res1 = browser.find_element_by_id('kw').send_keys('上海天气') print(res1) # 退出浏览器 browser.quit()
from selenium import webdriver # 1.通过id值匹配 browser = webdriver.Chrome() browser.get('https://www.baidu.com') # 2.通过name值匹配 res2 = browser.find_element_by_name('wd') print(res2) # 退出浏览器 browser.quit()
from selenium import webdriver # 1.通过id值匹配 browser = webdriver.Chrome() browser.get('https://www.baidu.com') # 3.通过class属性匹配 res3 = browser.find_element_by_class_name('s_ipt') print(res3) # 退出浏览器 browser.quit()
from selenium import webdriver # 1.通过id值匹配 browser = webdriver.Chrome() browser.get('https://www.baidu.com') # 4.通过css选择器来匹配 res4 = browser.find_element_by_css_selector('#kw') print(res4) # 退出浏览器 browser.quit()
from selenium import webdriver # 1.通过id值匹配 browser = webdriver.Chrome() browser.get('https://www.baidu.com') # 5.通过Xpath来匹配 res5 = browser.find_element_by_xpath('//input[@id="kw"]') print(res5) # 退出浏览器 browser.quit()
from selenium import webdriver # 1.通过id值匹配 browser = webdriver.Chrome() browser.get('https://www.baidu.com') # 6.通过标签名来匹配 res6 = browser.find_element_by_tag_name('input') print(res6) # 退出浏览器 browser.quit()
from selenium import webdriver # 1.通过id值匹配 browser = webdriver.Chrome() browser.get('https://www.baidu.com') # 7.通过文本链接匹配 res7 = browser.find_element_by_link_text('新闻') print(res7) # 退出浏览器 browser.quit()
from selenium import webdriver # 1.通过id值匹配 browser = webdriver.Chrome() browser.get('https://www.baidu.com') # 8.针对一些比较长的文本链接,取其中一小部分 res8 = browser.find_element_by_partial_link_text('新') print(res8) # 退出浏览器 browser.quit()
from selenium import webdriver # 1.通过id值匹配 browser = webdriver.Chrome() browser.get('https://www.baidu.com') res1 = browser.find_elements_by_id('kw').send_keys('上海天气') print(res1) # 退出浏览器 browser.quit()
from selenium import webdriver # 1.通过id值匹配 browser = webdriver.Chrome() browser.get('https://www.baidu.com') # 2.通过name值匹配 res2 = browser.find_elements_by_name('wd') print(res2) # 退出浏览器 browser.quit()
from selenium import webdriver # 1.通过id值匹配 browser = webdriver.Chrome() browser.get('https://www.baidu.com') # 3.通过class属性匹配 res3 = browser.find_elements_by_class_name('s_ipt') print(res3) # 退出浏览器 browser.quit()
from selenium import webdriver # 1.通过id值匹配 browser = webdriver.Chrome() browser.get('https://www.baidu.com') # 4.通过css选择器来匹配 res4 = browser.find_elements_by_css_selector('#kw') print(res4) # 退出浏览器 browser.quit()
from selenium import webdriver # 1.通过id值匹配 browser = webdriver.Chrome() browser.get('https://www.baidu.com') # 5.通过Xpath来匹配 res5 = browser.find_elements_by_xpath('//input[@id="kw"]') print(res5) # 退出浏览器 browser.quit()
from selenium import webdriver # 1.通过id值匹配 browser = webdriver.Chrome() browser.get('https://www.baidu.com') # 6.通过标签名来匹配 res6 = browser.find_elements_by_tag_name('input') print(res6) # 退出浏览器 browser.quit()
from selenium import webdriver # 1.通过id值匹配 browser = webdriver.Chrome() browser.get('https://www.baidu.com') # 7.通过文本链接匹配 res7 = browser.find_elements_by_link_text('新闻') print(res7) # 退出浏览器 browser.quit()
from selenium import webdriver # 1.通过id值匹配 browser = webdriver.Chrome() browser.get('https://www.baidu.com') # 8.针对一些比较长的文本链接,取其中一小部分 res8 = browser.find_elements_by_partial_link_text('新') print(res8) # 退出浏览器 browser.quit()
一次只能查找一个element对象,第一个参数:设置要查找的方式,第二个参数:设置要查找的值
from selenium import webdriver from selenium.webdriver.common.by import By browser = webdriver.Chrome() browser.get('https://www.baidu.com') res1 = browser.find_element(By.ID, 'kw') print(res1) res2 = browser.find_element(By.NAME, 'wd') print(res2) res3 = browser.find_element(By.CLASS_NAME, 's_ipt') print(res3) res4 = browser.find_element(By.CSS_SELECTOR, '#kw') print(res4) res5 = browser.find_element(By.XPATH, '//input[@id="kw"]') print(res5) res6 = browser.find_element(By.LINK_TEXT, '新闻') print(res6) res7 = browser.find_element(By.PARTIAL_LINK_TEXT, '新') print(res7) res8 = browser.find_element(By.TAG_NAME, 'input') print(res8)
一次能查找多个element对象,第一个参数:设置要查找的方式,第二个参数:设置要查找的值
from selenium import webdriver from selenium.webdriver.common.by import By browser = webdriver.Chrome() browser.get('https://www.baidu.com') res1 = browser.find_elements(By.ID, 'kw') print(res1) res2 = browser.find_elements(By.NAME, 'wd') print(res2) res3 = browser.find_elements(By.CLASS_NAME, 's_ipt') print(res3) res4 = browser.find_elements(By.CSS_SELECTOR, '#kw') print(res4) res5 = browser.find_elements(By.XPATH, '//input[@id="kw"]') print(res5) res6 = browser.find_elements(By.LINK_TEXT, '新闻') print(res6) res7 = browser.find_element(By.PARTIAL_LINK_TEXT, '新') print(res7) res8 = browser.find_elements(By.TAG_NAME, 'input') print(res8)
from selenium import webdriver from selenium.webdriver.common.by import By browser = webdriver.Chrome() browser.get('https://www.baidu.com') res1 = browser.find_elements(By.CLASS_NAME, 'title-content-title') for i in res1: print(i.text) # 退出浏览器 browser.quit()
from selenium import webdriver from selenium.webdriver.common.by import By browser = webdriver.Chrome() browser.get('https://www.baidu.com') res2 = browser.find_element(By.ID, 'su').get_attribute('value') print(res2) # 退出浏览器 browser.quit()