一。安裝selenium pip install selenium javascript
二。安裝相應瀏覽器的Driver(selenium 文檔) http://selenium-python.readthedocs.io/api.html 推薦使用Chromecss
三。selenium的使用html
1 # -*- coding: utf-8 -*- 2 3 from selenium import webdriver 4 from scrapy.selector import Selector 5 6 7 #知乎的模擬登陸 8 browser = webdriver.Chrome(executable_path="E:/chromedriver.exe") #路徑是chromedriver.exe的存放的位置 9 browser.get("https://www.zhihu.com/#signin") 10 browser.find_element_by_css_selector(".view-signin input[name='account']").send_keys("********") #賬號 11 browser.find_element_by_css_selector(".view-signin input[name='password']").send_keys("********") #密碼 12 browser.find_element_by_id("captcha").send_keys(input('請輸入驗證碼:')) 13 browser.find_element_by_css_selector(".view-signin button.sign-button").click() #登陸 14 browser.quit() 15 16 實例二: 17 #能夠用selenium獲得js加載後的html,好比這樣的話能夠抓取到原本抓取的不到的一些字段(淘寶的交易量等等) 18 browser = webdriver.Chrome(executable_path="E:/chromedriver.exe") 19 browser.get("https://detail.tmall.com/item.htm?spm=a230r.1.14.3.yYBVG6&id=538286972599&cm_id=140105335569ed55e27b&abbucket=15&sku_properties=10004:709990523;5919063:6536025") 20 print(browser.page_source) #page_source就是js加載完的源代碼 21 #browser.quit() 22 ''' 23 若是是用selenium自己的選擇器(python寫的,比較慢),會很慢 24 因此如今轉換成scrapy中的selector(他是用c語言寫的,很快) 25 模版,也能夠嵌入scrapy中 26 ''' 27 t_selector=Selector(text=browser.page_source) 28 print(t_selector.xpath('//*[@id="J_StrPriceModBox"]/dd/span/text()').extract())
有時會遇到取不到內容的狀況,看看是否是還沒加載完畢,在中間sleep() 幾秒就行了。java
四。selenium模擬登陸微博,模擬鼠標下拉node
微博也有開放的API:http://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5python
1 #selenium 完成微博模擬登陸 2 browser = webdriver.Chrome(executable_path="E:/chromedriver.exe") 3 browser.get("http://weibo.com/") 4 import time 5 time.sleep(5) 6 browser.find_element_by_css_selector("#loginname").send_keys("******") 7 browser.find_element_by_css_selector(".info_list.password input[node-type='password']").send_keys("******") 8 browser.find_element_by_css_selector(".info_list.login_btn a[node-type='submitBtn']").click() 9 #下拉 10 for i in range(3): 11 '''三次下拉操做,這是javascript的知識 execute_script是用來執行js代碼的'''
12 browser.execute_script("window.scrollTo(0, document.body.scrollHeight); var lenOfPage=document.body.scrollHeight; return lenOfPage;") 13 time.sleep(3)
五。chromedrive 不加載圖片,phantomjs獲取動態網頁web
chromedriver不加載圖片:chrome
1 #設置chromedriver不加載圖片 2 #是固定的模板 3 chrome_opt=wibdriver.ChromeOptions() 4 prefs={"profile.managed_default_content_settings.images":2} 5 chrome_opt.add_experimental_option("prefs",prefs) 6 browser=webdriver.Chrome(executable_path="E:/chromedriver.exe",chrome_options=chrome_opt) 7 browser.get("http://weibo.com")
六。phantomjs獲取動態網頁:windows
下載地址:http://phantomjs.org/download.html 若是不能下載,複製連接到迅雷下載api
淘寶的詳情頁實例
1 #phantomjs, 無界面的瀏覽器, 多進程狀況下phantomjs性能會降低很嚴重 2 browser = webdriver.PhantomJS(executable_path="F:/迅雷下載/phantomjs-2.1.1-windows/bin/phantomjs.exe") 3 browser.get("https://detail.tmall.com/item.htm?spm=a230r.1.14.3.yYBVG6&id=538286972599&cm_id=140105335569ed55e27b&abbucket=15&sku_properties=10004:709990523;5919063:6536025") 4 print (browser.page_source) 5 browser.quit()
關於selenium的我推薦蟲師的教程,仍是很不錯的。「UI 測試自動化selenium」彙總
本人知識學習的總結者