天天看點

16、web爬蟲講解2—PhantomJS虛拟浏覽器+selenium子產品操作PhantomJS

http://bdy.lqkweb.com
http://www.swpan.cn

【轉載自:

http://www.lqkweb.com

PhantomJS虛拟浏覽器

phantomjs 是一個基于js的webkit核心無頭浏覽器 也就是沒有顯示界面的浏覽器,利用這個軟體,可以擷取到網址js加載的任何資訊,也就是可以擷取浏覽器異步加載的資訊

下載下傳網址:

http://phantomjs.org/download.html

 下載下傳對應系統版本

16、web爬蟲講解2—PhantomJS虛拟浏覽器+selenium子產品操作PhantomJS

下載下傳後解壓PhantomJS檔案,将解壓檔案夾,剪切到python安裝檔案夾

16、web爬蟲講解2—PhantomJS虛拟浏覽器+selenium子產品操作PhantomJS

然後将PhantomJS檔案夾裡的bin檔案夾添加系統環境變量

16、web爬蟲講解2—PhantomJS虛拟浏覽器+selenium子產品操作PhantomJS

cdm 輸入指令:PhantomJS  出現以下資訊說明安裝成功

16、web爬蟲講解2—PhantomJS虛拟浏覽器+selenium子產品操作PhantomJS

selenium子產品是一個python操作PhantomJS軟體的一個子產品

selenium子產品PhantomJS軟體

webdriver.PhantomJS()執行個體化PhantomJS浏覽器對象

get('url')通路網站

find_element_by_xpath('xpath表達式')通過xpath表達式找對應元素

clear()清空輸入框裡的内容

send_keys('内容')将内容寫入輸入框

click()點選事件

get_screenshot_as_file('截圖儲存路徑名稱')将網頁截圖,儲存到此目錄

page_source擷取網頁htnl源碼

quit()關閉PhantomJS浏覽器

#!/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浏覽器僞裝,和滾動滾動條加載資料

有些網站是動态加載資料的,需要滾動條滾動加載資料

16、web爬蟲講解2—PhantomJS虛拟浏覽器+selenium子產品操作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)           
16、web爬蟲講解2—PhantomJS虛拟浏覽器+selenium子產品操作PhantomJS