使用puppeteer抓取网站数据

举报
薛定喵君 发表于 2021/06/03 23:05:44 2021/06/03
【摘要】 记一下使用puppeteer抓取开源中国上的推荐软件数据 1.安装 npm install puppeteer 2.引入 const puppeteer = require('puppeteer'); 3.抓取代码 const sleep = time => new Promise(resolve => { setTimeo...

记一下使用puppeteer抓取开源中国上的推荐软件数据

1.安装
npm install puppeteer

2.引入

const puppeteer = require('puppeteer');

   

3.抓取代码


    
  1. const sleep = time => new Promise(resolve => {
  2. setTimeout(resolve, time);
  3. })
  4. const url = `https://h5.oschina.net`;
  5. ;(async () => {
  6. console.log('Start visit');
  7. const brower = await puppeteer.launch({
  8. args: ['--no-sandbox', '--disable-setuid-sandbox'],
  9. dumpio: false
  10. });
  11. const page = await brower.newPage() // 开启一个新页面
  12. await page.goto(url, {
  13. waitUntil: 'networkidle2' // 网络空闲说明已加载完毕
  14. });
  15. //加载jQuery
  16. await page
  17. .mainFrame()
  18. .addScriptTag({
  19. url: 'https://cdn.bootcss.com/jquery/3.2.0/jquery.min.js'
  20. })
  21. await sleep(1000);
  22. // 编辑推荐内容
  23. await page.waitForSelector('.osc-list');
  24. // 结果
  25. const result = await page.evaluate(() => {
  26. //获取的数据数组
  27. let dataTemp = [];
  28. let articles = $('.project-item');
  29. for (let i = 0; i < articles.length; i++) {
  30. let article = articles[i];
  31. let descDoms = $(article).find('.osc-cell__title');
  32. let name = descDoms.find('.project-item__name').text();
  33. let title = descDoms.find('.project-item__desc').text();
  34. let desc = descDoms.find('.content').text();
  35. let ident = title.toLowerCase();
  36. dataTemp.push({
  37. name: name,
  38. title: title,
  39. desc: desc,
  40. ident: ident
  41. });
  42. }
  43. return dataTemp;
  44. });
  45. // 关闭浏览器
  46. brower.close();
  47. console.log(result);
  48. })();

3.运行 node app.js

文章来源: blog.csdn.net,作者:薛定喵君,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/jsxg2009/article/details/115244299

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。