Python網絡爬蟲(selenium配置無頭瀏覽器)


一、無頭瀏覽器(phantomJS)

  PhantomJS是一款無界面的瀏覽器,其自動化操作流程和上述操作谷歌瀏覽器是一致的。由於是無界面的,為了能夠展示自動化操作流程,PhantomJS為用戶提供了一個截屏的功能,使用save_screenshot函數實現。

  目前PhantomJS瀏覽器官方已停止維護,不建議使用

from selenium import webdriver
import time

# phantomjs路徑
path = r'PhantomJS驅動路徑'
browser = webdriver.PhantomJS(path)

# 打開百度
url = 'http://www.baidu.com/'
browser.get(url)

time.sleep(3)

browser.save_screenshot(r'phantomjs\baidu.png')

# 查找input輸入框
my_input = browser.find_element_by_id('kw')
# 往框里面寫文字
my_input.send_keys('美女')
time.sleep(3)
#截屏
browser.save_screenshot(r'phantomjs\meinv.png')

# 查找搜索按鈕
button = browser.find_elements_by_class_name('s_btn')[0]
button.click()

time.sleep(3)

browser.save_screenshot(r'phantomjs\show.png')

time.sleep(3)

browser.quit()

二、無頭瀏覽器(谷歌無頭瀏覽器)

  由於PhantomJs最近已經停止了更新和維護,所以推薦大家可以使用谷歌的無頭瀏覽器,是一款無界面的谷歌瀏覽器。

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import time
 
# 創建一個參數對象,用來控制chrome以無界面模式打開
chrome_options = Options()
chrome_options.add_argument('--headless')
chrome_options.add_argument('--disable-gpu')
# 驅動路徑
path = r'C:\Users\ZBLi\Desktop\1801\day05\ziliao\chromedriver.exe'
 
# 創建瀏覽器對象
browser = webdriver.Chrome(executable_path=path, chrome_options=chrome_options)  # 參數添加
 
# 上網
url = 'http://www.baidu.com/'
browser.get(url)
time.sleep(3)
 
browser.save_screenshot('baidu.png')  # 捕獲(截屏)保存
 
browser.quit()

三、項目實戰(配置谷歌無頭瀏覽器,爬取豆瓣電影)

from selenium import webdriver
from time import sleep
import time

if __name__ == '__main__':
    url = 'https://movie.douban.com/typerank?type_name=%E6%81%90%E6%80%96&type=20&interval_id=100:90&action='
    # 發起請求前,可以讓url表示的頁面動態加載出更多的數據
    path = r'C:\Users\Administrator\Desktop\爬蟲授課\day05\ziliao\phantomjs-2.1.1-windows\bin\phantomjs.exe'
    # 創建無界面的瀏覽器對象
    bro = webdriver.PhantomJS(path)
    # 發起url請求
    bro.get(url)
    time.sleep(3)
    # 截圖
    bro.save_screenshot('1.png')

    # 執行js代碼(讓滾動條向下偏移n個像素(作用:動態加載了更多的電影信息))
    js = 'window.scrollTo(0,document.body.scrollHeight)'
    bro.execute_script(js)  # 該函數可以執行一組字符串形式的js代碼
    time.sleep(2)

    bro.execute_script(js)  # 該函數可以執行一組字符串形式的js代碼
    time.sleep(2)
    bro.save_screenshot('2.png') 
    time.sleep(2) 
    # 使用爬蟲程序爬去當前url中的內容 
    html_source = bro.page_source # 該屬性可以獲取當前瀏覽器的當前頁的源碼(html) 
    with open('./source.html', 'w', encoding='utf-8') as fp: 
        fp.write(html_source) 
    bro.quit()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM