第三百三十七節,web爬蟲講解2—PhantomJS虛擬瀏覽器+selenium模塊操做PhantomJShtml
PhantomJS虛擬瀏覽器python
phantomjs 是一個基於js的webkit內核無頭瀏覽器 也就是沒有顯示界面的瀏覽器,利用這個軟件,能夠獲取到網址js加載的任何信息,也就是能夠獲取瀏覽器異步加載的信息web
下載網址:http://phantomjs.org/download.html 下載對應系統版本瀏覽器
下載後解壓PhantomJS文件,將解壓文件夾,剪切到python安裝文件夾異步
而後將PhantomJS文件夾裏的bin文件夾添加系統環境變量網站
cdm 輸入命令:PhantomJS 出現如下信息說明安裝成功ui
selenium模塊是一個python操做PhantomJS軟件的一個模塊url
selenium模塊PhantomJS軟件spa
webdriver.PhantomJS()實例化PhantomJS瀏覽器對象
get('url')訪問網站
find_element_by_xpath('xpath表達式')經過xpath表達式找對應元素
clear()清空輸入框裏的內容
send_keys('內容')將內容寫入輸入框
click()點擊事件
get_screenshot_as_file('截圖保存路徑名稱')將網頁截圖,保存到此目錄
page_source獲取網頁htnl源碼
quit()關閉PhantomJS瀏覽器3d
#!/usr/bin/env python # -*- coding:utf8 -*- from selenium import webdriver #導入selenium模塊來操做PhantomJS import os import time import re llqdx = webdriver.PhantomJS() #實例化PhantomJS瀏覽器對象 llqdx.get("https://www.baidu.com/") #訪問網址 # time.sleep(3) #等待3秒 # llqdx.get_screenshot_as_file('H:/py/17/img/123.jpg') #將網頁截圖保存到此目錄 #模擬用戶操做 llqdx.find_element_by_xpath('//*[@id="kw"]').clear() #經過xpath表達式找到輸入框,clear()清空輸入框裏的內容 llqdx.find_element_by_xpath('//*[@id="kw"]').send_keys('叫賣錄音網') #經過xpath表達式找到輸入框,send_keys()將內容寫入輸入框 llqdx.find_element_by_xpath('//*[@id="su"]').click() #經過xpath表達式找到搜索按鈕,click()點擊事件 time.sleep(3) #等待3秒 llqdx.get_screenshot_as_file('H:/py/17/img/123.jpg') #將網頁截圖,保存到此目錄 neir = llqdx.page_source #獲取網頁內容 print(neir) llqdx.quit() #關閉瀏覽器 pat = "<title>(.*?)</title>" title = re.compile(pat).findall(neir) #正則匹配網頁標題 print(title)
PhantomJS瀏覽器假裝,和滾動滾動條加載數據
有些網站是動態加載數據的,須要滾動條滾動加載數據
實現代碼
DesiredCapabilities 假裝瀏覽器對象
execute_script()執行js代碼
current_url獲取當前的url
#!/usr/bin/env python # -*- coding:utf8 -*- from selenium import webdriver #導入selenium模塊來操做PhantomJS from selenium.webdriver.common.desired_capabilities import DesiredCapabilities #導入瀏覽器假裝模塊 import os import time import re dcap = dict(DesiredCapabilities.PHANTOMJS) dcap['phantomjs.page.settings.userAgent'] = ('Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.221 Safari/537.36 SE 2.X MetaSr 1.0') print(dcap) llqdx = webdriver.PhantomJS(desired_capabilities=dcap) #實例化PhantomJS瀏覽器對象 llqdx.get("https://www.jd.com/") #訪問網址 #模擬用戶操做 for j in range(20): js3 = 'window.scrollTo('+str(j*1280)+','+str((j+1)*1280)+')' llqdx.execute_script(js3) #執行js語言滾動滾動條 time.sleep(1) llqdx.get_screenshot_as_file('H:/py/17/img/123.jpg') #將網頁截圖,保存到此目錄 url = llqdx.current_url print(url) neir = llqdx.page_source #獲取網頁內容 print(neir) llqdx.quit() #關閉瀏覽器 pat = "<title>(.*?)</title>" title = re.compile(pat).findall(neir) #正則匹配網頁標題 print(title)