selenium特殊无头模式

本文介绍了使用Xvfb和PyVirtualDisplay在无头模式下运行Selenium的实践方法,适用于包括Chrome和Firefox在内的多种浏览器。首先,通过安装Xvfb和PyVirtualDisplay库,然后设置DISPLAY环境变量为:1。接着,展示了一段包含Display、lxml、requests和webdriver等库的Python代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Xvfb 和 PyVirtualDisplay
使用这个解决方案,将可以兼容多种浏览器的webdriver,chrome,firefox,等等
yum/apt-get install Xvfb
pip install PyVirtualDisplay
检查DISPLAY设置,默认应该是 :1

env | grep DISPLAY

部分项目代码

from pyvirtualdisplay import Display
from lxml import etree
import re
import requests
from selenium import webdriver

        url = 'http://***'
        opt = webdriver.ChromeOptions()
        display = Display(visible=0, size=(800, 800))
        display.start()
        opt.add_argument('--disable-extensions')
        opt.add_argument('--disable-gpu')
        opt.add_argument("--no-sandbox")
        driver = webdriver.Chrome(executable_path="/usr/local/bin/chromedriver", chrome_options=opt)

        driver.get(url)
        time.sleep(3)
        response = driver.page_source
        driver.quit()
        # print(response)
        response = "".join(response).split('中间右边的部分')[1]
        selector = etree.HTML(response)
    for i in range(1,2):
        url = 'http://www.cbrc.gov.cn/zhuanti/xzcf/get2and3LevelXZCFDocListDividePage//2.html?current='+ str(i)
        opt = webdriver.ChromeOptions()
        display = Display(visible=0, size=(800, 800))
        display.start()
        opt.add_argument('--disable-extensions')

        opt.add_argument('--disable-gpu')
        opt.add_argument("--no-sandbox")

    for i in range(1,2):
        url = 'http://www.cbrc.gov.cn/zhuanti/xzcf/get2and3LevelXZCFDocListDividePage//2.html?current='+ str(i)
        opt = webdriver.ChromeOptions()
        display = Display(visible=0, size=(800, 800))
        display.start()
        opt.add_argument('--disable-extensions')

        opt.add_argument('--disable-gpu')
        opt.add_argument("--no-sandbox")
        driver = webdriver.Chrome(executable_path="/usr/local/bin/chromedriver", chrome_options=opt)

        driver.get(url)
        time.sleep(3)
        response = driver.page_source
        driver.quit()
        # print(response)
        response = "".join(response).split('中间右边的部分')[1]
        selector = etree.HTML(response)

        node_list = selector.xpath('//tr')
        for node in node_list:

            # item = {}
            title =  ''.join(node.xpath('./td[1]/a/@title'))
            print(title)
            if len(title) > 4 and '商业银行主要监管指标' not in title :
                title = title
                url_href = ''.join(node.xpath('./td[1]/a/@href'))
                url_href = 'http://www.cbrc.gov.cn'+url_href

                opt = webdriver.ChromeOptions()
                display = Display(visible=0, size=(800, 800))
                display.start()
                opt.add_argument('--disable-extensions')

                opt.add_argument('--disable-gpu')
                opt.add_argument("--no-sandbox")
                driver = webdriver.Chrome(executable_path="/usr/local/bin/chromedriver", chrome_options=opt)


                url = url_href
                driver.get(url)

                time.sleep(3)
                node_lists =driver.page_source
                #print(node_lists)
                selectors = etree.HTML(node_lists)
				driver.quit()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值