【Python】pyppeteer简单使用

news/2024/12/27 15:06:19/文章来源:https://www.cnblogs.com/shan-gui-yao/p/18305743

爬取百度搜索python的第一页标题

import sys
sys.path.append("/home/user/.local/lib/python3.9/site-packages")  #将包的路径添加到环境变量
import asyncio
from pyppeteer import launch
from pyppeteer_stealth import stealth #反检测模块,隐藏浏览器特征
import randomwidth,height = 1366,768async def main():brower = await launch({"executablePath":"/opt/browser360/browser360-cn"}, #指定已安装的浏览器,headless = False,#无界面模式关闭,显示界面userDataDir = "./userdata", #设置用户目录 userDataDir,可以恢复之前的历史记录,也可以恢复很多网站的登录信息args = ["--disable-infobars",f"--window-size={width},{height}"],#关闭提示”Chrome 正受到自动测试软件的控制”,设定界面大小#devtools = True,#打开调试模式,如果这个参数设置为 True,那么 headless 参数就会无效,会被强制设置为 False
                          )page = await brower.newPage() #打开一个新的标签页await stealth(page)  #反检测模块,隐藏特征await page.setViewport({"width":width,"height":height}) #界面大小
await page.goto("https://www.baidu.com/")await page.evaluate("""() =>{ Object.defineProperties(navigator,{ webdriver:{ get: () => false } }) }""") #使用 JavaScript 将它设置为false,规避webdriver检测await page.type('input#kw.s_ipt', "python") #搜索pythonawait asyncio.sleep(random.random() * random.randint(3, 5))await page.click('input#su') # 点击搜索按钮await asyncio.sleep(random.random() * random.randint(3, 5))await page.evaluate('window.scrollBy(0, window.innerHeight)') # 向下滑动滚动条title_element = await page.Jx('//*//h3/a') # 提取搜索结果第一页的标题# 清空input输入框的关键词,防止关键词累加await page.evaluate('document.querySelector("input[id=kw]").value=""')await asyncio.sleep(random.random() * random.randint(3, 5))for element in title_element:print(await (await element.getProperty('textContent')).jsonValue()) #打印所有节点元素文本信息
await asyncio.sleep(10)await brower.close()
asyncio.get_event_loop().run_until_complete(main())

第一页标题:

部分搜索页面

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/744787.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[CF1616H] Keep XOR low

last dance.Last dance。 最后一篇文章,就写我两年前就看过但不敢尝试的题目吧。 首先,两数异或 \(\le x\) 的条件看起来是好维护的,显然可以 Trie 树上跑一跑,但我们发现当 \(x\) 某一位是 \(1\) 的时候非常难受,情况变得非常复杂。此时我进行了一些尝试,尝试直接刻画合…

ss

ss ​​

web直播

步骤一:开通腾讯云直播服务 步骤二:获取推流URL 想要简单获取一个推流URL,可以参考文档:快速获得地址 想要了解推流地址和直播间ID的关系,可以参考文档:后台自动拼装 想要了解如果保护自己的推流地址不被盗用,可以参考文档:防盗链签名 步骤三:获取播放URL 步骤四:配置…

通过chrony实现内网自建时间同步服务器

服务端安装chrony服务端yum install -y chrony配置chrony服务端#chrony默认配置文件路径 # yum : 一般为/etc/chrony.conf # apt : 一般为/etc/chrony/chrony.conf #在chrony.conf中加入以下行 server ntp.aliyun.com iburst manual allow 0.0.0.0/0 local stratum 8测试chrony…

【YashanDB知识库】存储过程报错snapshot too old

问题描述 20231127上午客户反馈绩效系统20231125、20231126出现2次YAS-02020 snapshot too old的问题,测试也有类似问题。 该过程是客户新增的存储过程,目的是通过PRO_RUN_JOB作为主控,调度其他存储过程,后续不用其他调度引擎。 原因分析 错误信息收集分析 分析存储过程报错…

DeepVT论文阅读笔记

DeepVT: Deep View-Temporal Interaction Network for News Recommendation论文阅读笔记 Abstract 存在的问题: ​ 以往的研究大多只是直接应用新闻层面的表征进行用户建模,新闻的标题、摘要、分类等观点只是被隐含和压缩到新闻的单一向量中,这就使得不同新闻中的不同观点无…

直播预约丨《指标体系建设实战》第四期:如何构建全面的指标管理体系

指标是反映企业的各项核心业务活动、管理成效的数据体系,指标体系作为联结业务逻辑与数据实体的关键桥梁,是构建高质量数据统计的基础单元,并在量化业务绩效和效果评估中扮演着核心角色。 为了更好地服务于客户并提供切实可行的实践指导,自4月24日起,袋鼠云将推出全新《指…

shr不能创建出差单可能存在的问题

shr不能创建出差单可能存在的问题时间冲突 OTP设置问题​​

暑期集训shellcode5(手搓机器码)

拖进ida里面反汇编再让人工智能分析(我是废物)(后来给源码了,直接上源码) #include <string.h> #include <stdio.h> #include <stdlib.h> #include <inttypes.h> #include <capstone/capstone.h> #include <sys/mman.h>int upkeep() …

MySQL学习笔记——索引

索引 0.前言 本文是跟着网课学习的时候随手记录的一篇关于MySQL索引的学习笔记 1.索引概述 1.1.索引介绍 索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护着满足 特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样…

快速部署 HBase 测试环境

快速部署 HBase 测试环境 第一步:下载软件,在HBase官网下载最新版, 找到 bin,点击下载,比如我这里下载的是 hbase-2.5.6-bin.tar.gz 第二步:解压软件 $ tar -zxvf hbase-2.5.6-bin.tar.gz $ cd hbase-2.5.6第三步:启动软件 $ ./bin/start-hbase.sh $ ./bin/hbase-daemon…

【YashanDB知识库】用户密码带@字符时exp和imp无法使用

【问题分类】数据导入导出 【关键字】YAS-00404、数据导入导出、密码、特殊字符@、exp、imp 【问题描述】 当用户密码带@字符时,使用exp和imp导入导出数据,使用转义符仍然出现报错且yasql可以使用相同的转义方式正常登录 【问题原因分析】exp和imp的密码没有适配特殊字符 【解…