python+selenium学习(一)

安装selenium

pip install selenium

安装chromedriver

浏览器中输入chrome://version/查看当前版本
http://chromedriver.storage.googleapis.com/index.html下载对应版本驱动

配置chromedriver

解压下载包得到chromedriver.exe,复制到任意文件夹中
在这里插入图片描述

将当前路径复制添加到系统环境变量中即可。
在这里插入图片描述

测试

from selenium import webdriver
import time

def main():
    browser = webdriver.Chrome()
    browser.get('https://www.amazon.com')
    time.sleep(10)
    browser.quit()
if __name__ == '__main__':
    main()

或者在cmd中输入chromedriver
在这里插入图片描述

add_argument参数设置

from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
from selenium import webdriver

def getBrowser(port):
    chrome_driver_path = 'E:/chromedriver/chromedriver.exe'
    opt = Options()
    # 把chrome设置成无界面化
    opt.headless = True
    # 让chrome在root权限下运行,解决DevToolsActivePort文件不存在的报错
    opt.add_argument('--no-sandbox')
    # 禁用浏览器正在被自动化程序控制的提示
    opt.add_argument('--disable-infobars')
    # 设置浏览器分辨率
    opt.add_argument('window-size=1920x3000')
    # 谷歌文档提到需要加上这个属性来规避bug
    opt.add_argument('--disable-gpu')
    # 隐藏滚动条,应对一些特殊页面
    opt.add_argument('--hide-scrollbars')
    # 不加载图片,提升运行速度
    opt.add_argument('blink-settings=imagesEnabled=false')
    # 加载历史的用户数据
    opt.add_argument('user-data-dir=E:/selenium/AutomationProfile')
    # 连接调试的debug
    opt.add_experimental_option("debuggerAddress", "127.0.0.1:%d" % port)
    #driver.get改成不阻塞,直接返回,不用等待界面加载完成
    desired_capabilities = DesiredCapabilities.CHROME
    desired_capabilities["pageLoadStrategy"] = "none"

    browser = webdriver.Chrome(options=opt, executable_path=chrome_driver_path)
    return browser

运行cmd命令行

import os

CHROME_PATH='E:/chromedriver'
PROJECT_PATH='G:/pythonProject'

def run_win_cmd(PORT):
    result = []
    os.chdir(CHROME_PATH)
    print(os.getcwd())
    cmd='chrome.exe ' \
     '--remote-debugging-port=%d ' \
     '--user-data-dir="G:/crawl/%d/AutomationProfile"'%(PORT,PORT)
    print(cmd)

    os.popen(cmd)
    os.chdir(PROJECT_PATH)
    print(os.getcwd())

获取网页源码

def getPageSource(browser,url):
    try:
        browser.get(url)
        pagesource=browser.page_source
        # print(pagesource)
        if len(pagesource)>0:
            return pagesource
    except:
        return None
PORT = 9530
def main():
    url = 'https://www.amazon.com'
    run_win_cmd(PORT)   #运行cmd命令行
    browser = getBrowser(PORT)  #创建浏览器对象
    browser.set_window_size(1920, 1080)
    browser.minimize_window()   #浏览器最小化
    source = getPageSource(browser, url)    #获取页面源码
    print(source)
    with open("home.html", "w", encoding="utf-8") as f:
        f.write(source)
    browser.close() #关闭浏览器
if __name__ == '__main__':
    main()

环境搭建参考:
https://www.cnblogs.com/lfri/p/10542797.html
参数设置参考:
https://www.cnblogs.com/pywjh/p/9785650.html
https://www.cnblogs.com/darkspr/p/11533119.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值