小三:怎么了小二?一副愁眉苦脸的样子。

小二:唉!这不是快过年了吗,家里又催相亲了 ...

小三:现在不是流行网恋吗,你可以试试相亲软件呀。

小二:这玩意靠谱吗?

小三:我也没用过,你自己看看软件评论区吧。
小二:这 ... 不过也只能先到评论区看看了。

本文以 360 手机助手为例,地址为:http://zhushou.360.cn/,相亲软件选择 3 个比较流行的,分别为:世纪佳缘、百合婚恋、有缘网,我们使用 Python 爬取软件评论区,看看用户评价情况。
先来看一下这三款软件的下载量和好中差评占比情况(下图单位为万次)。




下面开始爬取评论区,以世纪佳缘为例,首先,在搜索框输入世纪佳缘进行搜索,如图所示:

接着,点击搜索到的软件进入其详情页,如图所示:

将页面向下拉就可以看到评论区了,如图所示:

此时打开开发者工具并选择Network项,点击查看更多评论,然后可以看到getComments请求,如图所示:

通过这个请求我们就可以动态获取评论区数据了,其中参数star为开始的评论索引,参数count为每次加载的评论个数,可以通过参数callback、baike指定不同应用,爬取代码实现如下:
   
    - 
     
      
     
     
      
       headers = {
      
     
- 
     
      
     
     
      
           
       "Accept": 
       "*/*",
      
     
- 
     
      
     
     
      
           
       "Accept-Encoding": 
       "gzip, deflate, sdch",
      
     
- 
     
      
     
     
      
           
       "Accept-Language": 
       "zh-CN,zh;q=0.8",
      
     
- 
     
      
     
     
      
           
       "Connection": 
       "keep-alive",
      
     
- 
     
      
     
     
      
           
       "Host": 
       "comment.mobilem.360.cn",
      
     
- 
     
      
     
     
      
           
       "User-Agent": 
       "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER"
      
     
- 
     
      
     
     
      
       }
      
     
- 
     
      
     
     
      
       def comment_spider(param, file_name):
      
     
- 
     
      
     
     
      
           base_url = 
       "http://comment.mobilem.360.cn/comment/getComments?c=message&a=getmessage&&count=50"
      
     
- 
     
      
     
     
      
           start = 
       0
      
     
- 
     
      
     
     
      
           
       for i in 
       range(
       1, 
       50):
      
     
- 
     
      
     
     
      
               
       print(
       "第{}页".format(i))
      
     
- 
     
      
     
     
      
               url = base_url + param + 
       "&start=" + str(start)
      
     
- 
     
      
     
     
      
               r = requests.get(url, headers=headers)
      
     
- 
     
      
     
     
      
               data = re.findall(
       "{\"errno\"(.*)\);}catch\(e\){}", r.text)
      
     
- 
     
      
     
     
      
               # 转为 Json 格式
      
     
- 
     
      
     
     
      
               jdata = json.loads(
       "{\"errno\"" + data[
       0])
      
     
- 
     
      
     
     
      
               
       for message in jdata[
       "data"][
       "messages"]:
      
     
- 
     
      
     
     
      
                   content = message[
       "content"]
      
     
- 
     
      
     
     
      
                   
       print(content)
      
     
- 
     
      
     
     
      
                   with open(file_name + 
       ".txt", 
       "a", encoding=
       "utf-8") as f:
      
     
- 
     
      
     
     
      
                       f.write(content)
      
     
- 
     
      
     
     
      
               start = start + 
       50
      
     
- 
     
      
     
     
      
               time.sleep(
       2)
      
     
我们将爬取的评论数据存到了 txt 文件中。
接着,我们将评论数据进行词云展示,代码实现如下:
   
    - 
     
      
     
     
      
       with open(
       "yy.txt", 
       "r", encoding=
       "utf-8") as f:
      
     
- 
     
      
     
     
      
           content = f.read()
      
     
- 
     
      
     
     
      
           stylecloud.gen_stylecloud(text=content, max_words=
       600,
      
     
- 
     
      
     
     
      
                                     collocations=False,
      
     
- 
     
      
     
     
      
                                     font_path=
       "SIMLI.TTF",
      
     
- 
     
      
     
     
      
                                     icon_name=
       "fas fa-heart",
      
     
- 
     
      
     
     
      
                                     size=
       800,
      
     
- 
     
      
     
     
      
                                     output_name=
       "yy.png")
      
     
- 
     
      
     
     
      
           Image(filename=
       "yy.png")
      
     
最后,通过词云看一下用户对上述软件的评价情况。
世纪佳缘:

百合婚恋:

有缘网:

小二:看了有缘网的评论,我感觉自己和相亲软件无缘 ...
小三:...
源码在公号后台回复 201207 获取。
PS:如果觉得分享内容有一些帮助,欢迎大家随手分享、点赞、在看。
声明:本文不构成对上述相亲软件的任何使用建议。
< END >

转载:https://blog.csdn.net/ityard/article/details/110848770
