广告
返回顶部
首页 > 资讯 > 数据库 >数据采集实战(二)-
  • 828
分享到

数据采集实战(二)-

数据采集实战(二)- 2015-01-09 02:01:50 828人浏览 绘本
摘要

1. 概述 京粉(https://uNIOn.jd.com/)是京东联盟下的网站,通过分享其中的商品链接可以赚取佣金,类似淘客联盟。 采集京粉的商品,既可以练习 puppeteer的使用,平时想在京东购物时,也能用得上(采集看看

数据采集实战(二)-

1. 概述

京粉(https://uNIOn.jd.com/)是京东联盟下的网站,通过分享其中的商品链接可以赚取佣金,类似淘客联盟。

采集京粉的商品,既可以练习 puppeteer的使用,平时想在京东购物时,也能用得上(采集看看有类似商品的价格和评价)。

2. 主要流程

采集的流程很简单:
image.png

2.1 登录

登录本来是很简单的步骤,只是京粉的登录有点特殊,它的登录框是在 iframe 中,所以,加载完网页后可能登录框并没有出现。
需要加载完 iframe 之后才能录入用户名/密码。
image.png

登录模块的代码如下:

const username = "YOUR NAME";
const passwd = "YOUR PASSWORD";

// 登录
const login = async (page) => {
  await page.Goto("Https://union.jd.com/index");

  // 等待加载 login 的 iframe
  await page.waitForSelector("#indexIframe");
  const frame = (await page.frames())[1];

  await frame.waitForSelector("#loginname");
  // 输入用户名和密码 登录
  await frame.type("#loginname", username, { delay: 100 });
  await frame.type("#nloginpwd", passwd, { delay: 100 });
  await frame.click("#paipaiLoginSubmit");
};

export default login;

2.2 进入“商品检索”菜单

登录成功后,进入首页,点击左侧的菜单进入“商品检索”页面。
image.png

注意这里直接使用 page 的 click 方法是无效的,需要使用如下方式:

// 进入商品界面
const productPage = async (page) => {
  await page.waitForSelector(".menu-wrapper");

  // 直接选择无法点击,只能用 page.evaluate 方法来点击
  // 【我要推广】 菜单
  await page.evaluate(
    (selector) => document.querySelectorAll(selector)[0].click(),
    ".el-submenu__title>span"
  );
  
  // 【商品推广】 菜单
  await page.evaluate(
    (selector) => document.querySelectorAll(selector)[1].click(),
    "li.el-menu-item>span"
  );
};

2.3 录入检索条件并开始检索

商品推广页面支持的检索条件很多,这里只输入佣金价格的范围来检索:

// 检索商品(佣金比例范围,价格范围)
const searchProduct = async (page, feeMin, feeMax, priceMin, priceMax) => {
  await page.waitForSelector(".imgbox");

  await page.waitForSelector("input.el-input__inner");
  const inputs = await page.$$("input.el-input__inner");

  // IMPORTANT 使用click才能输入完整,使用 focus,无法输入完整
  await inputs[1].click();
  // await inputs[1].focus();
  await inputs[1].type(feeMin, { delay: 200 });
  await inputs[2].click();
  await inputs[2].type(feeMax, { delay: 200 });
  await inputs[3].click();
  await inputs[3].type(priceMin, { delay: 200 });
  await inputs[4].click();
  await inputs[4].type(priceMax, { delay: 200 });

  // 佣金和价格输入之后,鼠标必须浮在输入框上,才会出现确定按钮去检索
  const divs = await page.$$(".commission");
  // div对应的确认按钮在隐藏的 div中
  let popover = await divs[1].evaluate((node) =>
    node.getAttribute("aria-describedby")
  );

  // 通过 hover()函数,让确定按钮显示出来
  await inputs[4].hover();
  await page.waitForSelector(`#${popover}`, { visible: true });
  await page.click(`#${popover}>.el-button--primary`);
};

export default searchProduct;

佣金的范围(feeMinfeeMax),价格范围(priceMinpriceMax)是通过参数传入的。

image.png

2.4 保存网页

保存网页很简单,**puppeteer **提供了获取整个html页面的接口。

// 保存网页内容到指定路径
const savePage = async (page, dirname, filename) => {
  const html = await page.content();
  await saveContent(dirname, filename, html);
};

// 保存解析后的网页内容到指定路径
const saveContent = async (dirname, filename, content) => {
  if (!mkdirsSync(dirname)) {
    console.error("mkdir save page dir ERROR!");
    return;
  }

  fs.writeFileSync(path.join(dirname, filename), content);
};

2.5 进入下一页

在页面的最下方有翻页的按钮,只要找到下一页的按钮即可。
image.png
点击下一页的函数如下:

// 进入下一页
const nextPage = async (page) => {
  await page.waitForSelector(".el-pagination");
  const pageBottons = await page.$$(".el-pagination>button");
  // pageBottons[0] -> 上一页   pageBottons[1] -> 下一页
  await pageBottons[1].click();
  await page.waitForNavigation();
};

export default nextPage;

3. 运行效果

jinfen.gif

4. 总结

以上通过 puppeteer 采集京粉商品数据的实战中,技术要点主要有:

  1. 加载 iframe 并自动登录
  2. 点击menu 菜单迁移到商品页面
  3. 在文本框中输入检索条件
  4. 自动翻页

5. 注意事项

爬取数据只是为了研究学习使用,本文中的代码遵守:

  1. 如果网站有 robots.txt,遵循其中的约定
  2. 爬取速度模拟正常访问的速率,不增加服务器的负担
  3. 只获取完全公开的数据,有可能涉及隐私的数据绝对不碰
您可能感兴趣的文档:

--结束END--

本文标题: 数据采集实战(二)-

本文链接: https://www.lsjlt.com/news/8608.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 数据采集实战(二)-
    1. 概述 京粉(https://union.jd.com/)是京东联盟下的网站,通过分享其中的商品链接可以赚取佣金,类似淘客联盟。 采集京粉的商品,既可以练习 puppeteer的使用,平时想在京东购物时,也能用得上(采集看看...
    99+
    2015-01-09
    数据采集实战(二)-
  • 数据采集实战(三)-
    1. 概述 王者荣耀是一直都挺喜欢的一个手游,玩了好几年,最近一段开始喜欢看比赛,所以想着采集点数据看看各个战队或者选手的情况。 顺便也练习练习 puppeteer 的使用。 数据来源于:尚牛电竞 。 2. 采集流程 王者荣耀最近正在进行...
    99+
    2020-07-29
    数据采集实战(三)-
  • 数据采集实战(四)-
    1. 概述 前段时间在看一本很多人推荐的线性代数教材《线性代数应该这样学》第三版,这一版每个章节都有大量的习题。 官方网站上虽然按照章节提供了习题的答案,一来因为网站是国外的,访问不流畅,二来答案中还夹杂着广告,影响查看。 所以,想试着将...
    99+
    2019-04-29
    数据采集实战(四)-
  • 数据采集实战(五)-
    1. 概述 现在学校越来越重视孩子课外知识的掌握,给孩子挑选课外书一般都是参考学校或者家长之间的推荐。 有时,也会想看看在儿童阶段,目前到底流行的是些什么样的书。 ​ 于是,就简单写了这个小爬虫,采集了畅销童书的前20名。 要想采集更多的...
    99+
    2015-05-29
    数据采集实战(五)-
  • 数据采集实战(一)-
    概述 最近在学习python的各种数据分析库,为了尝试各种库中各种分析算法的效果,陆陆续续爬取了一些真实的数据来。 顺便也练习练习爬虫,踩了不少坑,后续将采集的经验逐步分享出来,希望能给后来者一些参考,也希望能够得到先驱者的指点! 采集工...
    99+
    2017-02-11
    数据采集实战(一)-
  • 第03期:Prometheus 数据采集(二)
    本期作者:罗韦 爱可生上海研发中心成员,研发工程师,主要负责 DMP 平台监控告警功能的相关工作。 上篇文章(第02期:数据采集一)介绍了 Prometheus 数据采集的格式和分类,本文会对采集过程进行详细的介绍。 Prometheu...
    99+
    2021-09-25
    第03期:Prometheus 数据采集(二)
  • Python采集C站热榜数据实战示例
    目录前言功能实现解析数据保存数据总结前言 大家好,我们今天来爬取c站的热搜榜,把其文章名称,链接和作者获取下来,我们保存到本地,我们通过测试,发现其实很简单,我们只要简单获取数据就可...
    99+
    2023-05-19
    Python采集C站热榜数据 Python 数据采集
  • Python实战使用XPath采集数据示例解析
    目录lxml发送请求明确需求:解析数据保存数据lxml lxml 是 Python 的一个库,用于解析和呈现 XML 和 HTML。它支持多种内置和第三方 XML 和 HTML 标记...
    99+
    2023-05-16
    Python XPath采集数据 Python XPath
  • 数据采集 - Marvin
                     链接:https://bdcc.bigdataedu.org/block/48(需账号登录)...
    99+
    2016-08-03
    数据采集 - Marvin
  • php实现大数据采集
    随着互联网的不断发展,数据采集成为了人们获取信息的重要手段。然而,随着数据量的不断增加,传统的手动采集方法已经无法满足需求,因此,大数据采集技术成为了关键。在这里,我们来介绍一下php实现大数据采集的方法。一、 数据采集流程数据采集流程通常...
    99+
    2023-05-24
  • 【Python实战】Python采集情感音频
    成年人的世界真不容易啊 总是悲伤大于欢喜 爱情因为懵懂而快乐 却走进了复杂和困惑的婚姻 前言 我最近喜欢去听情感类的节目,比如说,婚姻类,我可能老了吧。我就想着怎么把音乐下载下来了,保存到手机上,方便我们业余时间去听。 环境使用 ...
    99+
    2023-09-05
    python 爬虫 音视频
  • Python爬虫实战演练之采集糗事百科段子数据
    目录知识点爬虫基本步骤:爬虫代码导入所需模块获取网页地址发送请求数据解析保存数据运行代码,得到数据知识点 1.爬虫基本步骤 2.requests模块 3.parsel模块 4.xpa...
    99+
    2022-11-12
  • Python采集二手车数据的超详细讲解
    目录数据采集发送请求明确需求:解析数据保存数据总结数据采集 XPath,XML路径语言的简称。XPath即为XML路径语言(XML Path Language),它是一种用来确定XM...
    99+
    2023-05-16
    Python采集二手车数据 Python 数据采集
  • Python采集电影评论实战示例
    目录数据采集发送请求解析数据获取内容输出内容总结数据采集 我们上一篇介绍了,如何采集王者皮肤,买不起皮肤,当个桌面壁纸挺好的。我们今天来学习如何采集电影评论,看看这个电影好不好看。 ...
    99+
    2023-05-16
    Python采集电影评论 Python采集
  • Python采集王者最低战力信息实战示例
    目录🥩数据采集🍖确定网址请求URL:请求方式:参数:请求示例返回示例🍖获取数据🍖解析数据保存数据🥩数据采集 🍖确定网址 王者新赛季马上就要开始了,大家都开始冲榜了,准备拿一个小省标,...
    99+
    2023-05-16
    Python采集王者战力信息 Python 采集
  • Python爬虫实战演练之采集拉钩网招聘信息数据
    目录本文要点:环境介绍本次目标爬虫块使用内置模块:第三方模块:代码实现步骤: (爬虫代码基本步骤)开始代码导入模块发送请求解析数据加翻页保存数据运行代码,得到数据本文要点: ...
    99+
    2022-11-12
  • 亚马逊数据采集
    爬虫技术:通过网页抓取、HTTP请求、DNS解析等技术手段来获取网站数据。 用户行为数据:通过用户访问网站的行为记录来获取用户信息,包括访问时间、访问页面、跳出率、购买记录等。 第三方API接口:通过第三方API接口,可以获取网站的用户信...
    99+
    2023-10-27
    亚马逊 数据采集
  • 数据采集与存储
    1.2 数据采集技术的功能及特点 数据采集技术是指通过各种手段和工具,从各种数据源中采集、提取和处理数据的过程。数据采集技术的主要功能包括: 数据源的识别:通过各种手段找到需要采集数据的来源,包括网站...
    99+
    2023-09-15
    python mysql spark
  • Hive实战之Youtube数据集
    Hive是一个基于Hadoop的数据仓库基础设施,可以用于处理大规模的结构化数据。在Hive中,使用类似SQL的查询语言来处理数据,...
    99+
    2023-09-15
    Hive
  • Python采集C站高校信息实战示例
    目录前言功能实现内容获取总结前言 大家好,我们今天来爬取c站的高校名单,把其高校名单,成员和内容数获取下来,不过,我们发现这个网站比我们平时多了一个验证,下面看看我是怎么解决的。 功...
    99+
    2023-05-19
    Python采集C站高校信息 Python 信息采集
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作