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

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

hxing6419个月前 (03-21)其它4859

问题:

当我们爬取某个网站时,有些网站可能需要登录才能获取到数据,但是当我们通过 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')


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


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

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

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

分享给朋友:

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

git创建完远程分支,在命令行不显示

原因:本地分支与远程分支不同步导致1. 先fetch刷新git fetch2. 查看分支git branch -a就可以看到新增的分支了...

使用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浏览器为例),进入设置把上图的“下载前询问每个文件的保存位置”勾选上,如下图&...

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

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

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

发表评论

访客

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