爬JD商品评论


前言

有熟人在开网店,了解到开网店就避免不了…你懂的
少量刷的时候还好,可等到大量刷就需要自己从别处一个个copy评论
看他每次copy得那么费劲,我就寻思自己能不能整个爬虫帮帮他
然后发现两个for循环就能搞定
那废话不多说,我们开始吧~

分析网页

参考连接:https://item.jd.com/10020746259899.html#crumb-wrap
因为我刚买了iPhone11,现在正缺手机壳,所以就以11的手机壳为例~

F12打开开发者工具先分析一波
具体怎么分析……就是找!挨着找!使劲找评论对应的json代码包!
然后终于在一个叫【productPageComments.action】的包中找到了
进【Preview】里瞅瞅是不是找对了

ok,评论藏在了【comments】下,被定义为【content】

获取Request URL

通过这一步得到【productPageComments.action】的文本数据
好了,该得到的信息我们都得到了,然后我们上代码吧~

需要这几个module

import requests

import json

for循环①

用for循环的意义在于,每页就10条评论,如果只爬10条评论的话,不如直接手动copy
所以我把RequestURL拆分开了
把【页数】定义成了变量
这样用for循环的时候,就可以根据你设定的范围去获取更多页的评论了

for i in range(0,10):

    url1 = 'https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=10020746259899&score=0&sortType=5&page='

    url2 = str(i)

    url3 = '&pageSize=10&isShadowSku=0&fold=1'

    finalUrl = url1+url2+url3

    res = requests.get(finalUrl)
    data = json.loads(res.text[20:-2])

for循环②

这个for循环是嵌套进for循环①里的
目的是为了遍历获取到json文本里我们需要的那部分信息
我们需要的就只有评论,而评论被定义为【content】
所以我们最终要得到的是它
为了方便检验是否有正确获取到,整个print输出监控下

然后因为如果直接把评论输出到控制台的话也不利于我们copy和查看
所以就需要将获取到的评论保存到本地

保存完毕后同样print输出一下方便自己监控进度

    for i in data['comments']:
        content = i['content']
        print("已获取该条评论内容")
        file = open("E:\\webcrawler\\comment.txt",'a')
        file.writelines(format(content))
print("!完成写入!")

文章作者: 陈唯熙
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 陈唯熙 !
  目录