安装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