python 爬蟲日誌(12) selenium+chromeheadless

最近正在寫一個爬取淘寶全部店鋪信息的爬蟲,因爲淘寶的網頁內容基本都是動態加載的,因此用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

相關文章
相關標籤/搜索