大概记录一下:
# coding:utf8
"""
@author Nemo
@time 2024/04/20 00:06
"""
import time
from DrissionPage import ChromiumPage, ChromiumOptions
def get_ua():
"""
获取浏览原始UA
:return:
"""
co = ChromiumOptions()
# 无头模式
co.headless()
co.set_argument('--no-sandbox')
co.set_argument('--disable-extensions')
co.set_argument('--guest')
chrome = ChromiumPage(addr_or_opts=co)
ua = chrome.user_agent.replace('Headless', '')
chrome.close()
return ua
def get_config(ua):
"""
获得浏览器配置
:return:
"""
co = ChromiumOptions()
# 设置不加载图片、静音
co.no_imgs(True).mute(True)
# 匿名模式(无痕模式)
co.incognito()
# 无头模式
co.headless()
# 另外也支持 Chromium 内核浏览器的一系列启动配置参数
# 无沙盒模式
co.set_argument('--no-sandbox')
# 禁用插件
co.set_argument('--disable-extensions')
# 设置初始窗口大小
co.set_argument('--window-size', '1920,1080')
# 设置启动时最大化
co.set_argument('--start-maximized')
# 使用来宾模式打开浏览器
co.set_argument('--guest')
# co.remove_argument('--start-maximized')
# co.remove_argument('--window-size')
co.set_user_agent(ua)
return co
def get_chrome(co: ChromiumOptions):
"""
获得一个浏览器对象
:param co:
:return:
"""
return ChromiumPage(addr_or_opts=co)
def get_page(url: str, ua):
"""
获取一个页面
:param url:
:param ua:
:return:
"""
page = get_chrome(get_config(ua))
try:
page.get(url, timeout=30)
# 使用JavaScript滚动到页面底部
page.run_js("window.scrollTo(0, document.body.scrollHeight);")
time.sleep(3)
return page.html
finally:
page.close()
if __name__ == '__main__':
start = int(time.time() * 1000)
# 获取原始浏览器ua
_ua = get_ua()
_url = 'https://www.link-nemo.com/u/10001/post/1642098'
html = get_page(_url, _ua)
print(html)
end = int(time.time() * 1000)
print('cost', end - start)