Nemo

Nemo 关注TA

路漫漫其修远兮,吾将上下而求索。

Nemo

该文章投稿至Nemo社区   Python  板块 复制链接


使用DrissionPage无头模式采集网页信息

发布于 2024/04/21 22:26 213浏览 0回复 1,811

大概记录一下:

# 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)



点赞(0)
点了个评