想要买一款手机!得先用爬虫爬取一下他的评论是否值得买!

1. 网站分析

本文实现的爬虫是抓取京东商城指定苹果手机的评论信息。使用 requests 抓取手机评论 API 信息,然后通过 json 模块的相应 API 将返回的 JSON 格式的字符串转换为 JSON 对象,并提取其中感兴趣的信息。读者可以点击此处打开 京东商城,如下图所示:

 

URL 是 苹果手机商品 。商品页面如下图所示:

 


在页面的下方是导航条,读者可以单击导航条上的数字按钮,切换到不同的页面,会发现浏览器地址栏的 URL 并没改变,这种情况一般都是通过另外的通道获取的数据,然后将数据动态显示在页面上。那么如何来寻找这个通道的 URL 呢?

在 Chrome 浏览器的开发者工具的 Network 选项中单击 XHR 按钮,再切换到其他页,并没有发现要找的 API URL,可能京东商城获取数据的方式有些特殊,不是通过 XMLHttpRequest 发送的请求。


所以重新选中 All 按钮,显示所有的 URL。现在用另外一种方式寻找这个 URL,就是 Filter。通过左上角的 Filter 输入框,可以通过关键字搜索 URL,由于本文是抓取评论数据,所以可以尝试输入 comments,在左下角的列表中会出现如下图所示的内容。

在搜索结果中会看到 1个名为 productPageComments.action 的 URL ,单机这个 URL,在右侧切换到 Preview 选项卡,会看到如上图所示的内容,很明显,这是 JSON 格式的数据,展开 comments ,会看到有 10 项 ,这是返回的 10 条评论。在展开某一条评论,如下图所示:


从属性的内容可以看出,content 属性是评论内容,creationTime 是评论时间,days 是购买多长时间后才来评论的。通过 Headers 选项卡可以得到如下完整的 URL 。

https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100005492549&score=0&sortType=5&page=0&pageSize=10&isShadowSku=100008348530&fold=1
1

从这个 URL 可以看出,page 参数表示页数,从 0 开始,pageSize 参数表示每页获取的评论数,默认是 10,这个参数可以保留默认值,只改变 page 参数即可。

2. 示例代码

根据前面的描述实现抓取苹果手机评论信息的爬虫,通过 fetch_comment_count 变量可以控制抓取的评论条数。最后将抓取的结果显示在控制台中。示例代码如下:

# -*- coding: UTF-8 -*-
"""
@author:AmoXiang
@file:4.抓取京东苹果手机评论.py
@time:2020/09/15
"""
import requests
import jsonheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.102 Safari/537.36'
}fetch_comment_count = 1000  # 限定抓取的评论数
index = 0  # 用于记录爬取到第几条评论
page_index = 0  # 页码
flag = True  # 用于控制循环是否退出while flag:url = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=100005492549&score=0&sortType=6&page={}&pageSize=10&isShadowSku=100008348530&rid=0&fold=1'.format(page_index)page_index += 1res = requests.get(url=url, headers=headers)text = res.text# 下面的代码替换返回数据的部分内容,因为返回的数据并不是标准的 JSON 格式json_str = text.replace('fetchJSON_comment98(', '')[:-2]json_obj = json.loads(json_str)  # 将字符串转换为字典对象comments_list = json_obj['comments']comments_list_length = len(comments_list)# 循环输出评论数据for i in range(comments_list_length):comments = comments_list[i]['content']print(f'< {index + 1} > {comments}')creation_time = comments_list[i]['creationTime']  # 获取评论时间nickname = comments_list[i]['nickname']  # 获取昵称print(creation_time)print(nickname)print("-" * 20)index += 1if index == fetch_comment_count:flag = Falsebreak

程序运行结果如下图所示:

3. 注意事项

  1. 京东商城如果频繁使用同一个 IP 发起大量请求,服务端会临时性封锁 IP,可以使用一些免费的代理。
  2. API URL 返回的数据并不是标准的 JSON,里面还有一些杂质,需要在本地将其删除。 本例有一个前缀是 fetchJSON_comment98 ,这个前缀是通过 URL 的 callback 参数指定的,根据参数名应该是个回调函数,具体是什么不需要管,总之,需要按照 callback 参数的值将返回数据的前缀去掉。

完整项目代码获取点这即可

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1620387.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Web前端期末大作业-在线手机商城网站设计(HTML+CSS+JS)

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

优秀网站看前端 —— 小米Note介绍页面

刚开始经营博客的时候&#xff0c;我写过不少“扒皮”系列的文章&#xff0c;主要介绍一些知名站点上有趣的交互效果&#xff0c;然后试着实现它们。后来开始把注意力挪到一些新颖的前端技术上&#xff0c;“扒皮”系列便因此封笔多时。今天打算重开“扒皮”的坑&#xff0c;不…

爬取五大平台621款手机,告诉你双十一在哪买最便宜!

↑关注置顶~ 有趣的不像个技术号 今晚0点&#xff0c;相约剁手 大家好&#xff0c;我是朱小五 明天就是双十一了&#xff0c;看了看自己手里的卡的像IE浏览器的手机&#xff0c;感觉可能等不到5G普及了。 我&#xff01;要&#xff01;换&#xff01;手&#xff01;机&#xff…

宁花4000买手机 不花6元买游戏

宁花4000买手机 不花6元买游戏 2012-03-22 09:17 0评论 阅读数&#xff1a;1005 单独窗口打印放大字号缩小字号 千变万变&#xff0c;国情不变。曾经毁了中国PC游戏市场的那些东西&#xff0c;如今又在iOS游戏市场一一重现&#xff1a;盗版、外挂、抄袭、强制消费、恶意竞争………

买手机选择困难症,Python数据分析帮你解决

每年各大品牌旗舰机发布都是一大热点&#xff0c;特别是前几天发布的iPhone Xs Max算是手机界的大新闻了&#xff0c;新款iPhone的价格也再度刷新了手机定价的记录。看完发布会&#xff0c;相信很多人的心情是这样的&#xff08;文末爬虫资料赠送&#xff09; 我一朋友鱼哥之前…

基于JAVA的盛卖手机销售网站的设计

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a;

HTML/CSS/Javascript注册登陆界面全模版(表单验证/验证码生成/敏感词屏蔽/炫酷动画/账号信息储存)

作为前端初学者&#xff0c;我在自学过程中发现了许多自己难以解决的问题&#xff0c;而在搜索相关内容时由于许多资料过于分散&#xff0c;使用起来十分麻烦&#xff0c;所以我在完成相关内容编写后将其整理为一个模块来进行逐个分析。 示例源码&#xff1a;https://download…

小程序如何写一个优美的tab选项卡

小程序如何写一个优美的tab选项卡&#xff1f; 最近有位朋友刚学小程序&#xff0c;于是乎给我传了他写的一个tab选项卡&#xff0c;昨天晚上恰有空闲&#xff0c;于是改了一下 写选项卡的方法有很多&#xff0c;方法也特别简单&#xff0c;本文就介绍一下就客户体验而言如何让…

css html5布局方式_创建新HTML5 / CSS3单页布局–艺术主题

css html5布局方式 HTML5/CSS3 single page layout – Art theme. Today I will like to product new great masterpiece – new template with codename: ‘Art theme’. This will nice HTML5 template with nice gray colors. Hope that you will like new styles and you w…

android popWindow组件微信式实现(较完整版)

效果 PopWinLayout package com.coral3.common_module.components;import android.content.Context; import android.os.Handler; import android.os.Message; import android.util.AttributeSet; import android.view.Gravity; import android.view.LayoutInflater; import a…

前端学习第四周

目录 一.position定位1.1定位的用法&#xff08;写法&#xff09;1.2relative相对定位1.2.1特性1.2.2实际案例 1.3absolute绝对定位1.3.1特性1.3.2实际案例 1.4fixed&#xff1a;固定定位1.4.1特性1.4.2实际案例 1.5sticky粘性定位1.5.1特性1.5.2实际案例 1.6z-index定位层级1.…

Web前端4

一、relative相对定位 position定位 1.position特性 css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则决定了该元素的最终位置。 2.position取值 static(默认) relative absolute fixed sticky relative相对定位 1.如果没有定位偏移量&am…

Flutter 城市/通讯录列表字母索引联动效果实现

前言 在像通讯录&#xff0c;联系人列表&#xff0c;城市选择列表等数据量比较多的长列表页面中&#xff0c;我们经常会留意到产品设计会在页面的右侧区域提供一个竖向的字母索引列表&#xff0c;供用户点击选择快速定位到长列表中的指定索引位置&#xff0c;以便于用户快速定位…

快给你的Vue项目添加一个编辑图片组件吧

一款功能极其强大的图片编辑插件 tui.image-editor 快速体验 首选在你的前端项目中安装&#xff1a; npm i tui-image-editor // or yarn add tui-image-editor现在你就去新建一个.vue文件&#xff0c;复制进去下面这段代码&#xff1a; <template><div id"t…

QTableWidget表格控件的用法(非常详细)

QTableWidget表格控件的用法&#xff08;非常详细&#xff09; [1] QTableWidget表格控件的用法&#xff08;非常详细&#xff09;[2] QTableWidget详解1.常用API设置自动调整行高和列宽设置表格内容是否可编辑设置行表头、列表头是否显示 2.添加子项3.右键弹出菜单4.设置风格5…

如果你觉得自己对 CSS 变量不熟悉,那么可以补充这个!

作者&#xff1a; Ahmad Shadeed 译者&#xff1a;前端小智 来源&#xff1a;ishadeed 点赞再看&#xff0c;养成习惯 本文 GitHub https://github.com/qq449245884/xiaozhi 上已经收录&#xff0c;更多往期高赞文章的分类&#xff0c;也整理了很多我的文档&#xff0c;和教程资…

VMware中配置NAT方式上网 by.zyw

VMware中配置NAT方式上网 by.zyw 看了本站上众大神的VMware配置NAT方式上网的文章后&#xff0c;发现在本人电脑上并不能完全设置成功&#xff0c;在自己摸索后&#xff0c;虚拟机配置NAT方式上网成功&#xff0c;下列个人实际操作经验&#xff1a; NAT模式介绍&#xff1a; …

在线文档 - Google 文档的数据协议设计

在线文档 - Google 文档的数据协议设计 Google 文档作为 G Suite 重要的产品套件之一&#xff0c;作为优秀的在线协作文档而经常被开发者所讨论&#xff0c;在 Google 文档背后&#xff0c;有着一整套优秀的相关架构设计支撑&#xff0c;数据协议设计就是其中之一&#xff0c;非…

数仓--------简单了解

作者前言 &#x1f382; ✨✨✨✨✨✨&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f367;&#x1f382; ​&#x1f382; 作者介绍&#xff1a; &#x1f382;&#x1f382; &#x1f382; &#x1f389;&#x1f389;&#x1f389…

分类预测 | MATLAB实现SSA-CNN-SVM基于麻雀算法优化卷积支持向量机分类预测

分类预测 | MATLAB实现SSA-CNN-SVM基于麻雀算法优化卷积支持向量机分类预测 目录 分类预测 | MATLAB实现SSA-CNN-SVM基于麻雀算法优化卷积支持向量机分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 MATLAB实现SSA-CNN-SVM基于麻雀算法优化卷积支持向量机分类预测…