最近正在寫一個爬取淘寶全部店鋪信息的爬蟲,因爲淘寶的網頁內容基本都是動態加載的,因此用BeautifulSoup+requests的方法就難以應付了,由於request獲得的只是網頁的源代碼,和開發者工具中看到的不同,不少數據都是後來再加載的,因此有時咱們須要分析ajax請求來得到數據,但這樣有時太過麻煩,不過咱們還有另外一個神器selenium。這是一個自動化測試工具,有了它,就能夠用代碼讓程序模擬執行人在瀏覽器上的全部操做,讓數據動態加載,加載後的完整代碼就都可以獲取,和咱們在開發者工具中看到的同樣,這樣就不用擔憂網頁動態加載的問題了。css
關於selenium的下載就很少說網上不少資料,selenium老是要配合第三方瀏覽器使用的,之前selenium一直和phantomjs是好夥伴,但如今聽說已經分道揚鑣了,谷歌也推出了chromeheadless無界面瀏覽器,徹底能夠取代phantomjs。這裏附上selenium文檔,爲了讓selenium驅動谷歌瀏覽器,咱們還須要一個chromedriver,這個也請你們到網上下載,不過必定注意要與chrome的版本對應,否則可能會產生一些問題。html
# selenium from selenium import webdriver 引入驅動器 browser = webdriver.Chrome() # 創立一個chrome瀏覽器對象 browser.get('http://www.baidu.com') # 請求網頁,運行到此的三行代碼,就能夠發現程序自動打開了一個瀏覽器 #若是是運行無界面版的chrome則 option = webdriver.ChromeOption() option.add_argument('headless') browser = webdriver.Chrome(chrome_options=option) browser.get('http://www.baidu.com') # 將上面的代碼這樣寫,就發現沒有瀏覽器打開了,此時是無界面形式 #最經常使用的方法是尋找元素的函數,如find_element_by_class_name(),find_elements_by_class_name(),前一種返回第一個找到的webelement對象,後一種返回一個列表包含全部的對象,另外還能夠經過id,css_selector,xpath,tag_name等多種方法來定位元素 #若要瀏覽器執行js代碼,則將命令寫到一個字符串中,則調用excute_script()方法就能夠執行js命令,如將頁面移到底部 js = "window.scrollTo(0,document.body.scrollHeight)" browser.execute_script(js) #對於可點擊的元素能夠用 element.click()來點擊 #對於輸入框元素能夠用 element.send_keys('輸入的內容') #來輸入內容
關於selenium的更多用法,能夠去查詢文檔,我也會在後面的使用中,將新的用法記錄在博客中。python