selenium模塊css
selenium模塊爲第三方模塊須要安裝,selenium模塊是一個操做各類瀏覽器對應軟件的api接口模塊html
selenium模塊是一個操做各類瀏覽器對應軟件的api接口模塊,因此還得須要下載對應瀏覽器的操做軟件python
操做原理是:selenium模塊操做瀏覽器操做軟件,瀏覽器操做軟件操做瀏覽器git
Selenium 2.0適用於如下瀏覽器
Google Chrome
Internet Explorer 7, 8, 9, 10, 11
Firefox
Safari
Opera
HtmlUnit
phantomjs
Android
iOSgithub
Selenium 的核心,就是用js控制瀏覽器web
下載對應瀏覽器的瀏覽器操做軟件chrome
Chrome: https://sites.google.com/a/chromium.org/chromedriver/downloads
Edge: https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox: https://github.com/mozilla/geckodriver/releases
Safari: https://webkit.org/blog/6900/webdriver-support-in-safari-10/api
咱們這裏以火狐瀏覽器爲列瀏覽器
首先將火狐瀏覽器的操做軟件,geckodriver.exe文件放置到爬蟲目錄裏多線程
selenium模塊能夠模擬用戶行爲操做各類版本瀏覽器
webdriver.Firefox('操做瀏覽器軟件路徑')實例化火狐瀏覽器對象
get('url')訪問網站
find_element_by_xpath('xpath表達式')經過xpath表達式找對應元素
clear()清空輸入框裏的內容
send_keys('內容')將內容寫入輸入框
click()點擊事件
get_screenshot_as_file('截圖保存路徑名稱')將網頁截圖,保存到此目錄
page_source獲取網頁htnl源碼
browser.close() 關閉瀏覽器
#!/usr/bin/env python # -*- coding:utf8 -*- from selenium import webdriver # 導入selenium模塊來操做瀏覽器軟件 import time browser = webdriver.Firefox(executable_path='H:/py/16/adc/adc/Firefox/geckodriver.exe') browser.get('https://www.tmall.com/?spm=a220o.1000855.a2226mz.1.5c90c3484bZCx6') # 模擬用戶操做 browser.find_element_by_xpath('//input[@id="mq"]').clear() # 經過xpath表達式找到輸入框,clear()清空輸入框裏的內容 browser.find_element_by_xpath('//input[@id="mq"]').send_keys('連衣裙') # 經過xpath表達式找到輸入框,send_keys()將內容寫入輸入框 browser.find_element_by_xpath('//button[@type="submit"]').click() # 經過xpath表達式找到搜索按鈕,click()點擊事件 time.sleep(3) # 等待3秒 browser.get_screenshot_as_file('H:/py/17/img/123.jpg') # 將網頁截圖,保存到此目錄 neir = browser.page_source # 獲取網頁內容 print(neir) browser.close() # 關閉瀏覽器
利用scrapy的Selector方法。來過濾帥選數據
Selector()方法,過濾帥選數據,參數是獲得的字符串html源碼
#!/usr/bin/env python # -*- coding:utf8 -*- from selenium import webdriver # 導入selenium模塊來操做瀏覽器軟件 import time from scrapy.selector import Selector browser = webdriver.Firefox(executable_path='H:/py/16/adc/adc/Firefox/geckodriver.exe') browser.get('https://www.tmall.com/?spm=a220o.1000855.a2226mz.1.5c90c3484bZCx6') # 模擬用戶操做 browser.find_element_by_xpath('//input[@id="mq"]').clear() # 經過xpath表達式找到輸入框,clear()清空輸入框裏的內容 browser.find_element_by_xpath('//input[@id="mq"]').send_keys('連衣裙') # 經過xpath表達式找到輸入框,send_keys()將內容寫入輸入框 browser.find_element_by_xpath('//button[@type="submit"]').click() # 經過xpath表達式找到搜索按鈕,click()點擊事件 time.sleep(3) # 等待3秒 browser.get_screenshot_as_file('H:/py/17/img/123.jpg') # 將網頁截圖,保存到此目錄 neir = browser.page_source # 獲取網頁內容 # print(neir) gl_neir = Selector(text=neir) dedao = gl_neir.css('title::text').extract() print(dedao) browser.close() # 關閉瀏覽器
selenium操做瀏覽器滾動滾動條
execute_script(js)方法,執行原生態js腳本
#!/usr/bin/env python # -*- coding:utf8 -*- from selenium import webdriver # 導入selenium模塊來操做瀏覽器軟件 import time from scrapy.selector import Selector browser = webdriver.Firefox(executable_path='H:/py/16/adc/adc/Firefox/geckodriver.exe') browser.get('https://www.oschina.net/blog') time.sleep(3) # 等待3秒 for i in range(3): # 滾動3次滾動條 js = 'window.scrollTo(0,document.body.scrollHeight); var lenofpage=document.body.scrollHeight; return lenofpage' browser.execute_script(js) # 執行js語言滾動滾動條 time.sleep(3) neir = browser.page_source # 獲取網頁內容 # print(neir) gl_neir = Selector(text=neir) dedao = gl_neir.css('title::text').extract() print(dedao) # browser.close() # 關閉瀏覽器
設置請求網頁不加載圖片,提升請求效率
ChromeOptions()方法,建立谷歌瀏覽器設置對象
Chrome()方法,建立谷歌瀏覽器對象
下面以谷歌瀏覽器爲列
#!/usr/bin/env python # -*- coding:utf8 -*- from selenium import webdriver # 導入selenium模塊來操做瀏覽器軟件 from scrapy.selector import Selector #設置請求網頁不加載圖片,提升請求效率 chrome_options = webdriver.ChromeOptions() #建立谷歌瀏覽器設置對象 prefs = {"profile.managed_default_content_settings.images": 2} #設置谷歌瀏覽器不加載圖片 chrome_options.add_experimental_option('prefs', prefs) #將不加載圖片添加到瀏覽器 browser = webdriver.Chrome(executable_path='H:/py/16/adc/adc/Firefox/chromedriver.exe', chrome_options=chrome_options) # browser.set_page_load_timeout(40) #設置頁面最長加載時間爲40s browser.get('https://www.taobao.com/') neir = browser.page_source # 獲取網頁內容 # print(neir) gl_neir = Selector(text=neir) dedao = gl_neir.css('title::text').extract() print(dedao) # browser.close() # 關閉瀏覽器
selenium模塊還能夠操做PhantomJS瀏覽器,PhantomJS是一個無界面瀏覽器,比較清爽,可是多線程是性能會降低
重點:咱們推薦使用chromedriver.exe,谷歌瀏覽器