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

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

hxing6414个月前 (03-21)其它4198

问题:

当我们爬取某个网站时,有些网站可能需要登录才能获取到数据,但是当我们通过 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 如何避免爬取网站需要重复登录的情况” 的相关文章

php 设置nginx 伪静态

location / { if (!-e $request_filename){ rewrite ^/(.*)$ /index.php/$1 last; } }...

前后端都用得上的 Nginx 日常使用经验

前后端都用得上的 Nginx 日常使用经验

nginx 是一个高性能的开源反向代理服务器和 web 服务器,一般用来搭建静态资源服务器、负载均衡器、反向代理,本文将分享其在 Windows/docker 中的使用,使用 nssm 部署成服务的方案脚本,局域网中自定义域名解决https提示不安全的解决方案,以及一路踩过的坑。特点高性能:事件驱动...

seo学习知识点记录

seo学习知识点记录

(1)高质量页面心法:不要做你想做的,要做用户和百度喜欢的。(2)同样的内容,别人有排名,你没有排名:权重、域名、内链、外链综合因素导致(3)在你成为内行之前,你所有的想法都是垃圾,同行没有做的不要做(4)seo雷区:政治、宗教、民族、色情、迷信、新闻搬运、医疗。新闻搬运可以做,但是尽量不要做,可能...

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

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

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

微信支付 redirect_uri 提示  协议与后台配置不一致,错误码:10039

微信支付 redirect_uri 提示 协议与后台配置不一致,错误码:10039

如下图所示:检查微信公众后台的协议协议有没有对上,有些是强制了https的...

发表评论

访客

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