selenium 加載動態網頁

在使用selenium 之前先要下載瀏覽器驅動

下載 chrome 驅動

python 解壓縮 zip

def un_zip(file_name, to_dir='./'):
    """unzip zip file"""
    zip_file = zipfile.ZipFile(file_name)
    if os.path.isdir(to_dir):
        pass
    else:
        os.mkdir(to_dir)
    for names in zip_file.namelist():
        zip_file.extract(names, to_dir)
    zip_file.close()

requests 下載網絡文件

def download_driver(to_dir='./'):
    print('install chrome-driver first')
    url = 'http://npm.taobao.org/mirrors/chromedriver/LATEST_RELEASE'
    version = requests.get(url).content.decode('utf8')
    driver_file = 'http://npm.taobao.org/mirrors/chromedriver/' + version + '/chromedriver_win32.zip'
    r = requests.get(driver_file)
    download_zip = "chromedriver_win32.zip"
    with open(download_zip, "wb") as code:
        code.write(r.content)
    un_zip(download_zip,  to_dir)
    os.remove(download_zip)

使用 selenium 訪問百度圖片

自動打開瀏覽器,模擬手工搜索行爲,間歇性滾動鼠標
在這裏插入圖片描述

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait

import time
import requests
import zipfile
import os

#初始化一個瀏覽器(如:谷歌,使用Chrome需安裝chromedriver)
try:
    driver = webdriver.Chrome()
except Exception as e:
    download_driver(to_dir='./')
    driver = webdriver.Chrome()

try:
    #請求網頁
    driver.get("http://image.baidu.com/")
    #查找id值爲kw的節點對象(搜索輸入框)
    input = driver.find_element_by_id("kw")
    #模擬鍵盤輸入字串內容
    input.send_keys("街拍")
    #模擬鍵盤點擊回車鍵
    input.send_keys(Keys.ENTER)
    #顯式等待,最長10秒
    wait = WebDriverWait(driver,10)
    #等待條件:10秒內必須有個id屬性值爲imgContainer的節點加載出來,否則拋異常。
    wait.until(EC.presence_of_element_located((By.ID,'imgContainer')))
    # 輸出響應信息
    #print(driver.current_url) #請求url地址
    #print(driver.get_cookies())
    #print(driver.page_source) #獲取網頁內容
    #
    #將頁面滾動條拖到底部
    
    js="var q=document.documentElement.scrollTop=100000"

    while(True):
        driver.execute_script(js)
        time.sleep(4)

except Exception as err:
    print(err)
finally:
    #關閉瀏覽器
    driver.close()
    pass
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章