当前位置:首页 > 其它 > 正文内容

puppeteer 如何避免爬取网站需要重复登录的情况

hxing6411个月前 (03-21)其它3605

问题:

当我们爬取某个网站时,有些网站可能需要登录才能获取到数据,但是当我们通过 puppeteer 启动浏览器后,发现浏览器的登录信息不存在了,即使你在打开后手动登录了网站,当你重新启动程序后,又需要重新登录,导致我们没办法获取到这个网站数据。


解决方案:

我们可以把 启动浏览器 和 应用程序的动作分开。

Chrome浏览器是支持远程调试模式的。Puppeteer 可以通过websocket连接chrome浏览器


实现步骤:

  1.  找到Chrome安装路径

    浏览器地址输入 chrome://version 如下图,把这个地址复制,如下图

    image.png

  2. CMD命令行中输入  C:\Program Files\Google\Chrome\Application\chrome --remote-debugging-port=8888  ,  端口改成你想监听的端口,当然如果配置了环境变量的话可以直接输入 chrome --remote-debugging-port=8888

  3. 测试端口是否已经被监听

netstat -ano | findstr :8888

image.png

如果出现上图表明已经监听好了


4. 打开网址:http://127.0.0.1:8888/json/version,出现下图,记住该webSocket地址

image.png


5. 代码链接Chrome浏览器


const puppeteer = require('puppeteer-core')
var address = 'ws://127.0.0.1:8888/devtools/browser/6664816b-f32b-44b2-998b-9a59e4b3a714'  // 复制刚才的地址
const browser = await puppeteer.connect({
    browserWSEndpoint: address,
});
const page = await browser.newPage();
await page.goto('http://www.baidu.com')


以上示例代码,启动后将打开百度页面,并且会保存你的登录信息,大功告成啦!希望对您有帮助,感谢阅读!


扫描二维码推送至手机访问。

版权声明:本文由星星博客发布,如需转载请注明出处。

本文链接:http://xingxinghan.cn/?id=523

分享给朋友:

“puppeteer 如何避免爬取网站需要重复登录的情况” 的相关文章

wordpress中新增一个字段名,报错 ERROR 1067 (42000): Invalid default value for ‘post_date

可以直接修改my.cnf文件例如:     vim /etc/my.cnf在[mysqld]下面添加如下列:sql_mode=ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUT...

winar命令行解压/压缩文件操作

解压文件:WinRAR x test.rar /test以上命令执行将 test.rar 解压到 test 文件夹中压缩文件:WinRAR a -afzip test.zip test这个命令将文件夹 foldername 压缩成...

使用PHP8.2.9后,程序报错  could not find driver

使用PHP8.2.9后,程序报错 could not find driver

今天换了PHP版本后,运行项目出现 could not find driver解决思路:打开php.ini文件,检查配置文件中是否有  extension=pdo_mysql  是否已经打开php.ini 中 查找 extension_dir属性是否正确,检查...

SwitchyOmega谷歌扩展文件下载后会被浏览器自动删除

SwitchyOmega谷歌扩展文件下载后会被浏览器自动删除

下载SwitchyOmega后会被浏览器自动删除,如下图所示,下载地址  https://github.com/FelisCatus/SwitchyOmega/releases解决方案:打开浏览器(以Chrome浏览器为例),进入设置把上图的“下载前询问每个文件的保存位置”勾选上,如下图&...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。