zoukankan      html  css  js  c++  java
  • python使用pyppeteer相关使用

    1、安装pyppeteer

    pip install pyppeteer -i https://pypi.douban.com/simple

    2、chromium下载地址

    https://npm.taobao.org/mirrors/chromium-browser-snapshots/

    3、来源于网络copy的

    ignoreHTTPSErrors (bool): 是否要忽略 HTTPS 的错误,默认是 False。
    headless (bool): 是否启用 Headless 模式,即无界面模式,如果 devtools 这个参数是 True 的话,那么该参数就会被设置为 False,否则为 True,即默认是开启无界面模式的。
    executablePath (str): 可执行文件的路径,如果指定之后就不需要使用默认的 Chromium 了,可以指定为已有的 Chrome 或 Chromium。
    slowMo (int|float): 通过传入指定的时间,可以减缓 Pyppeteer 的一些模拟操作。
    args (List[str]): 在执行过程中可以传入的额外参数。
    ignoreDefaultArgs (bool): 不使用 Pyppeteer 的默认参数,如果使用了这个参数,那么最好通过 args 参数来设定一些参数,否则可能会出现一些意想不到的问题。这个参数相对比较危险,慎用。
    handleSIGINT (bool): 是否响应 SIGINT 信号,也就是可以使用 Ctrl + C 来终止浏览器程序,默认是 True。
    handleSIGTERM (bool): 是否响应 SIGTERM 信号,一般是 kill 命令,默认是 True。
    handleSIGHUP (bool): 是否响应 SIGHUP 信号,即挂起信号,比如终端退出操作,默认是 True。
    dumpio (bool): 是否将 Pyppeteer 的输出内容传给 process.stdout 和 process.stderr 对象,默认是 False。
    userDataDir (str): 即用户数据文件夹,即可以保留一些个性化配置和操作记录。
    env (dict): 环境变量,可以通过字典形式传入。
    devtools (bool): 是否为每一个页面自动开启调试工具,默认是 False。如果这个参数设置为 True,那么 headless 参数就会无效,会被强制设置为 False。
    logLevel (int|str): 日志级别,默认和 root logger 对象的级别相同。
    autoClose (bool): 当一些命令执行完之后,是否自动关闭浏览器,默认是 True。
    loop (asyncio.AbstractEventLoop): 时间循环对象。

    Dorm:

    import asyncio
    from time import sleep
    
    import requests
    from lxml import etree
    from pyppeteer import launch
    
    width, height = 2000, 1000
    
    
    # 实例化浏览器对象(谷歌测试版)
    async def main():
        browser = await launch(
            # 关闭无头浏览器 默认是无头启动的
            headless=False,
            args=['--disable-infobars',
                  f'--window-size={width},{height}',
                  ]
        )
        # 新建一个空白页
        page = await browser.newPage()
        await page.setViewport({'width': width, 'height': height})
        # 网址 URL
        await page.goto('http://www.szsqhot.com/forum.php?mod=forumdisplay&fid=2&filter=author&orderby=dateline&typeid=4')
        await page.evaluate('''() =>{ Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) }''')
        # 获取page当前显示页面的源码数据
        page_text = await page.content()
        tree = etree.HTML(page_text)
        numbers = tree.xpath('//div[@id="pgt"]//div[@class="pg"]//a[@class="last"]//text()')[0].strip('... ')
        # print(numbers)
        for number in range(1, int(numbers) + 1):
            sleep(3)
            url = 'http://www.szsqhot.com/forum.php?mod=forumdisplay&fid=2&orderby=dateline&typeid=4&orderby=dateline&typeid=4&filter=author&page={}'.format(
                number)
            # print(url)
            parse(url)
    
    
    def parse(url):
        response = requests.get(url=url)
        response.encoding = response.apparent_encoding
        tree = etree.HTML(response.text)
        sleep(2)
        table_list = tree.xpath('//table[@id="threadlisttableid"]//tbody[position()>1]')
        # print(table_list)
        for table_ in table_list:
            title = table_.xpath('.//th[@class="new ren_tzlb_twlb"]//a[@class="s xst"]//text()')[0]
            url = 'http://www.szsqhot.com/' + table_.xpath('.//th[@class="new ren_tzlb_twlb"]//a[@class="s xst"]//@href')[0]
            print(title)
            print(url)
            print('
    ')
            # sleep(3)
            # parse_detail(title, url)
    
    
    asyncio.get_event_loop().run_until_complete(main())
     # https://blog.csdn.net/qq_38839677/article/details/89348658
  • 相关阅读:
    调试跳转动态打印
    PHP对redis操作详解
    SSL证书没有绿锁您与此网站建立的连接并非完全安全解决办法
    63. Unique Paths II
    62. Unique Paths
    40. Combination Sum II
    60. Permutation Sequence
    59. Spiral Matrix II
    批量修改名字的脚本
    57. Insert Interval
  • 原文地址:https://www.cnblogs.com/ZH-YC/p/14555517.html
Copyright © 2011-2022 走看看