【Python获取购物平台APP评论内容】

本文介绍了如何使用Python爬虫获取购物平台APP的商品评论数据。通过解析网络请求找到评论数据JS文件,利用动态生成的t和sign参数构造URL,抓取并处理评论内容,最终将数据保存到Excel表格。
摘要由CSDN通过智能技术生成

Python获取购物平台APP的评论内容

最近研究需要商品评论数据,参考学习了其他大佬的文章。根据我自己不同的数据需求,改写了一个可以爬取购物APP评论数据的爬虫。但是不完全自动,仅供参考和个人学习使用。

数据与结果示例

评论原数据(这里的APP页面我用vx电脑版转过来的,因为电脑连接手机获取APP页面对我来说有点麻烦)
手机APP评论界面(就不贴图了,可以自己试一下)

右键检查找到network,这里jsv=xxxxx&appkey=xxxxx就是我们要爬取的评论进入preview可以看到ratelist,一页有十条评论数据。如果找不到这个可以打开search输入你要爬取的数据搜索就可以找到。
在这里插入图片描述
接下来通过爬取就可以得到如下的结果存入excel表格。

你需要什么数据就爬什么,后面代码会有不同的正则表达式匹配数据

操作步骤

1用vx桌面版打开手机分享的APP商品界面
2用chrome或者edge打开要爬取的评论页面。
3右键检查进入network找到评论数据JS文件(找不到可以search)。这里要爬到数据就是要请求到正确的url(可以在headers中看到)可以看一下url的结构baseurl&params参数组合,这里一个重点就是t与sign是动态生成的。
4 request(1)python 模拟请求抓取数据包,,手动获取自己的cookies

#爬取的页面
import requests
#from pymongo import MongoClient
#from urllib.parse import urlencode
import re
import json,simplejson
import hashlib
import time
import pandas as pd
import csv
import xlwt,xlrd,xlutils.copy
from requests.exceptions import RequestException


#conn = MongoClient('127.0.0.1', 27017) # 连接 mongodb
#db = conn.xxxxx  # 连接数据库,没有则自动创建
#my_set = db.meishi # 连接meishi表,没有则自动创建


# 获取请求需要的信息
def get_request_headers(page_num):
    headers = {
   
        'Connection': 'close',
        'Content-Type':'application/json',
        'accept':'*/*',
        'accept-encoding':'gzip, deflate, br',
        'accept-language':'zh-CN,zh;q=0.9',
        'referer': 'https://h5.m.xxxxx.com/',
        'user-agent': '这里写入你自己的agent,不同浏览器会不同一点',
        'cookie': '这里写入你自己的cookie(以上参数都可以在响应头里找到复制)'
    }
 

(2)获取参数,打开以下
在这里插入图片描述

所有参数都在这里,其中t,sign为动态生成的,auctionNumid商品ID,pagenum表示页数。
需要计算t和sign,其中t为当前时间戳,计算如下代码所示,
sign为token + ‘&’ + t + ‘&’ + appKey + ‘&’ + data这个合成字符串的md5加密结果,
其中token为cookie中有_m_h5_tk和_m_h5_tk_enc这两个参数,找到_m_h5_tk就是_m_h5的值加上时间戳,那么token就是前面的值,,比如:_m_h5_tk=abcd_1234,token=abcd
t已获取,appKey和data可以在参数组中得到复制就可

  data='{"showTrueCount":**,"auctionNumId":"*复制你的*","rateType":"","pageSize":10,"pageNo":' + str(page_num) + '}'
    t = str(int(time.time()*1000))#等于当前的时间戳乘以1000取整再转字符串
    t/o/k/e/n = "******"#token 是 cookies中_m_h5_tk的_前的值,找到复制; 
    appKey = "12574478"
    #sign =md5( token + '&' + t + '&' + appKey + '&' + data)
    datas = token+'&'+t+'&'+appKey+'&'+data
    sign = hashlib.md5()  # 创建md5对象
    sign.update(datas.encode())  # 使用md5加密要先编码,默认编码是utf-8
    signs = sign.hexdigest()   # 加密
    #print('sign:' + signs)
    #以上解出动态的sign值,传入到下面的参数
    params = {
   
        'jsv':'2.6.2',
        'appKey': appKey,
        't': t,
        'sign': signs,#上面的解
        'api':'mtop.xxxxxx.rate.detaillist.get',
        'v':'4.0',
        'ecode':'1',
        'type':'jsonp',
        'timeout':'20000',
        'dataType':'jsonp',
        'sessionOption':'AutoLoginOnly',
        'jsonplncPrefix':'haloMtop',
        'url':'https://mocks.xxxx-inc.com/mock/rate/h5/ratelist',
        'method':'get',
        'callback':'mtopjsonphaloMtop'+str(page_num),
        'data': data#上面写好的data
    }
    # 返回请求头和要传的参数
    return headers, params

至此有了正确的url就可以

def get_content(url, headers):
    try:
        response = requests.get(url, headers
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值