电商API接口|爬虫案例|采集某东商品评论信息

前言

平常大家都有网上购物的习惯,在商品下面卖的好的产品基本都会有评论,当然也不排除有刷评论的情况,因为评论会影响我们的购物决策。今天主要分享用python+re正则表达式获取京东商品评论。API接口获取京东平台商品详情SKU数据!

环境准备

pyhon编译器版本python3.7.4

集成开发环境(IDE)pycharm版本2020.1.5

相关包的安装

pip install requests

整体框架

  • 分析商品评论网页

  • 发送请求,获取响应内容

  • re正则表达式提取信息

  • pandas保存信息

  • 运行主程序

  • 总结

  1. 分析网页

打开京东官网,我搜的是电脑,因为是获取商品的评论,我选了评论数比较多的产品,然后可以在下方可以看到商品的评论。

图片

接下来就是按F12,选择网页。然后点击第二页刷新网页。在往下拉的过程中可以看到有个productPageComments.......页面,点击然后看下预览。下方就可以看到评论信息comments,依次点开后查看第一个信息,网页往上拉返回可以看到网页的信息和我们要查看的信息一致。

图片

正是我们需要找的信息,这里注意的是因为选择第二页刷新的信息,如果第一页刷新过,也有第一页的网页productPageComments,如何去辨别呢。我们可以看下参数信息,也就是查看载荷。

图片

看下参数下面有个page:1。注意刷新的页面还是第二页。这个很容易判断是第一页。我们先滚动页面,继续找到productPageComments,然后可以看到载荷下面的参数page:0

图片

也就是页面的规律是从0开始的,我们可以再验证一下,选择第三页刷新看载荷下方的参数,顺便看下参数是否有加密。

图片

第三页可以发现page:2,说明页面就是从0开始的,然后看下其他的参数基本不变,没有出现加密的情况,变化的主要page。这就是我们要找的网页页面规律。

然后需要看下响应的内容,继续回到预览,可以看到一页有10条评论,初步判断格式比较像json格式,json格式的数据和python数据结构的字典比较类似,这里面涉及python的基本语法,不在这赘述。

2.发送请求,获取响应内容

首先看下标头信息

图片

我们需要了解基本的请求网址,请求方法,状态码。

请求方法是get,后面就可以通过get方法向网页发送请求,有些网页是post。状态码是200,说明请求是ok的,如果遇到其他状态码,说明请求不成功,比如304,503。具体的状态码不在这赘述,可以网上查资料了解。不妨借助下ChatGPT的回答

图片

图片

图片

ChatGPT的回答还是比较详细,给它点个赞

图片

另外需要看的是请求标头下方的信息,比如cookie,user_agent。

图片

cookie是用来存储用户信息,服务器会去识别用户的信息。一般请求头需要带上cookie来做浏览器的伪装。下面看下百科的解释

图片

然后对比下ChatGPT的回答

图片

图片

user_agent(用户代理)是电脑的基本信息,电脑系统的版本,用的浏览器版本等,一般也是用来做浏览器的伪装。

然后看下ChatGPT对User_agent的解释

图片

接下来看下具体的请求代码

图片

注释:定义函数获取响应内容,带上请求头信息,用requests 和get方法发送请求,text就是响应的内容。

3.re正则表达式提取信息

re(regular expression)正则表达式的作用是精确匹配网页的信息,提取关键信息,功能也是比较强大,比如提取用来数字包括小数,整数等,还可以用来提取邮箱,身份证信息等。

下面看下ChatGPT回答

图片

图片

图片

具体也可查阅其他资料详细了解其用法。

re提取信息的关键代码如下:

图片

4.用pandas来保存信息。

相关代码如下

图片

定义函数 参数是data,下面是字段名称,用pandas构造DataFrame保存到excel表格中。

5.运行主程序

考虑到程序的性能和评论的时效性,本次采集前50页信息,用for循环遍历每一页的url,然后批量获取每一页的信息。

相关代码如下

图片

图片

运行结果部分数据展示:

图片

图片

总共获取500条评论。

完整代码:

import requests
import re
import json
import pandas as pd
# 基本url

BASE_URL = "https://club.jd.com/comment/productPageComments.action?

callback=fetchJSON_comment98&productId=100035712310&score=0&sortType=5

&page={}&pageSize=10&isShadowSku=0&rid=0&fold=1"

# 定义函数访问页面
def scrape_url(n):
url = BASE_URL.format(n)
return url

def get_reviews_html(url):
# 请求头
headers = {
'cookie': '__jdu=1659013711311387516036; shshshfpa=96b8fa44-7940-4a82-dc6b-ae9ec11053d8-1671423464; shshshfpb=l3JPGq-Nsv3ryl-UYczuTVg; unpl=JF8EAMhnNSttXEhSBh0LG0IZTlsBW11YGx4LbDAHBllbHANXEwFIFBl7XlVdXxRKFB9sYxRUXVNLVA4ZBisSEXteXVdZDEsWC2tXVgQFDQ8VXURJQlZAFDNVCV9dSRZRZjJWBFtdT1xWSAYYRRMfDlAKDlhCR1FpMjVkXlh7VAQrAhwWGEpdVlhdCEkXA21uA1BdX0pWAisDKxUge21WWVwPSRYzblcEZB8MF1cBHwEZF11LWlBWXAhJEQNvZQVUX1FNUAUcAxkVIEptVw; __jdv=76161171|baidu-pinzhuan|t_288551095_baidupinzhuan|cpc|0f3d30c8dba7459bb52f2eb5eba8ac7d_0_5272781a847d41aa892f3c52ffc92b78|1677294929187; areaId=19; PCSYCityID=CN_440000_440300_0; shshshfpx=96b8fa44-7940-4a82-dc6b-ae9ec11053d8-1671423464; shshshfp=edea99a27fbc1b9e7a0a677bc566df49; __jdc=122270672; ip_cityCode=1601; ipLoc-djd=19-1607-4773-62121; jwotest_product=99; 3AB9D23F7A4B3C9B=JLXTWBOH4BNFVY37YNSE4B6N2OLXI7T6WIX336O237ZEYUEAF4RFRCLPN3AEBN5FK556TM2FSRQABIGENHAVETWTGA; jsavif=1; __jda=122270672.1659013711311387516036.1659013711.1677312527.1677330268.7; __jdb=122270672.1.1659013711311387516036|7.1677330268; shshshsID=426d0c1911285cc51524a751262039de_1_1677330269246; JSESSIONID=85D1CE4A20581F98C688EA0EFE2CB175.s1',
'referer': 'https://item.jd.com/',
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36',
}
# 发送请求
response = requests.get(url=url,headers=headers)
# 获取响应内容
result = response.text
print(result)
return result
# 创建空列表,用来存放信息
data = []
def get_goods_contents(result):
# 提取评论内容
content = re.findall('"guid".*?"content":"(.*?)"',result)
# print(content)
# 提取产品尺寸
productSize = re.findall('productColor":"(.*?)"',result)
# print(productSize)
# 提取产品配置
productConfig = re.findall('"productSize":"(.*?)"',result)
# print(productConfig)
# 提取评论创建时间
creationTime = re.findall('"creationTime":"(.*?)"',result)
# 用for 循环批次把信息储存到data
for i in range(len(productSize)):
data.append([productSize[i],creationTime[i],productConfig[i],content[i]])
# print(data)
return data
def save_reviews(data):
columns = ['产品尺寸','评论时间','产品配置','产品评论']
df = pd.DataFrame(data,columns=columns)
df.to_excel('电脑评论.xlsx',encoding='utf-8')
# 运行主程序
if __name__=='__main__':
for i in range(0,50):
# 调用函数依次访问页面
url =scrape_url(n=i)
# 调用函数获取响应内容
result = get_reviews_html(url)
# 调用函数获取数据
data = get_goods_contents(result)
# 调用函数保存信息

save_reviews(data)

总结:

  1. 本次主要实战采集京东商品电脑商品信息评论,其他商品换关键词就可以。

  2. 文章借助了ChatGPT对一些概念做了一些解释,比如cookie,表达式。加深对基本概念的理解与运用。

  3. 这些评论如何清洗分析,去挖掘其中的商业价值?

  • 20
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用java+httpclient+httpcleaner,多线程、分布式爬去电商网站商品信息,数据存储在hbase上,并使用solr对商品建立索引,使用redis队列存储一个共享的url仓库;使用zookeeper对爬虫节点生命周期进行监视等。 爬虫(Web Crawler)是一种自动化程序,用于从互联网上收集信息。其主要功能是访问网页、提取数据并存储,以便后续分析或展示。爬虫通常由搜索引擎、数据挖掘工具、监测系统等应用于网络数据抓取的场景。 爬虫的工作流程包括以下几个关键步骤: URL收集: 爬虫从一个或多个初始URL开始,递归或迭代地发现新的URL,构建一个URL队列。这些URL可以通过链接分析、站点地图、搜索引擎等方式获取。 请求网页: 爬虫使用HTTP或其他协议向目标URL发起请求,获取网页的HTML内容。这通常通过HTTP请求库实现,如Python中的Requests库。 解析内容: 爬虫对获取的HTML进行解析,提取有用的信息。常用的解析工具有正则表达式、XPath、Beautiful Soup等。这些工具帮助爬虫定位和提取目标数据,如文本、图片、链接等。 数据存储: 爬虫将提取的数据存储到数据库、文件或其他存储介质中,以备后续分析或展示。常用的存储形式包括关系型数据库、NoSQL数据库JSON文件等。 遵守规则: 为避免对网站造成过大负担或触发反爬虫机制,爬虫需要遵守网站的robots.txt协议,限制访问频率和深度,并模拟人类访问行为,如设置User-Agent。 反爬虫应对: 由于爬虫的存在,一些网站采取了反爬虫措施,如验证码、IP封锁等。爬虫工程师需要设计相应的策略来应对这些挑战。 爬虫在各个领域都有广泛的应用,包括搜索引擎索引、数据挖掘、价格监测、新闻聚合等。然而,使用爬虫需要遵守法律和伦理规范,尊重网站的使用政策,并确保对被访问网站的服务器负责。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值