赵雷的歌都讲的是什么

最近爬虫群里有一道面试题,《赵雷的歌都讲的什么》。
面试官为什么问这样的问题?他是怎么想的?他想通过这个问题考察我们哪些能力?

我尝试着做了这道题,有一些不同的收获,于是写出来分享给大家。
整体思路是抓取网易云关于赵雷的所有歌词,统计词频,最后显示出来。

阅读流程
  • 效果展示
  • 项目地址
  • 核心代码
  • 遇到的问题
  • 总结

效果展示

在这里插入图片描述
在这里插入图片描述

项目地址

核心代码

  • 反爬部分
def sign(data):
    random = '1' * 16 # 随机数
    text = json.dumps(data) 
    params = aes(text,'0CoJUm6Qyw8W8jud')#第一次加签
    params = aes(params,random)#第二次加签
    encSecKey = rsa(random.encode(),"010001",'00e0b509f6259df8642dbc35662901477df22677ec152b5ff68ace615bb7b725152b3ab17a876aea8a5aa76d2e417629ec4ee341f56135fccf695280104e0312ecbda92557c93870114af6c9d05c4f7f0c3685b7a46bee255932575cce10b424d813cfe4875d3e82047b97ddef52741d546b8e289dc6935b3ece0462db0a22b8e7')
    return  {'params':params,
             'encSecKey':encSecKey  }
  • 统计词频部分

    • 加载自定义词典

      jieba.load_userdict("words.txt")
      
    • 加载停用词

      with open('stop.txt',encoding='utf-8') as fr:
          stop_words = [word.strip()for word in fr.readlines() if word.strip()]
      
    • 统计

      def cut_words(datas):
          words = {}
          for data in datas:
              for line in data.split('\n'):
                  tmps = jieba.cut(line)
                  # print(stop_words,'==')
                  tmps = [tmp for  tmp in tmps if tmp.strip() and tmp.strip() not in stop_words]
                  for word in tmps:
                      words[word]=words.setdefault(word,1)+1
          words = sorted(words.items(),key=lambda item:item[1],reverse=True)
          return dict(words)
      
  • 云图显示

    def gen_word_cloud(words):
        wordcloud = WordCloud(font_path='fonts/youyuan.TTF').generate_from_frequencies(words)
        plt.imshow(wordcloud)
        plt.axis("off")
        plt.show()
    

遇到的问题

  • 网易云反爬
    • 网易云的反爬类似快手的反爬,都是对参数进行两次aes加密,然后在对随机数进行rsa加密。
    • js逆向的过程是一个套路
      • 找到lyric地址,进行debug
      • 查看调用栈,找到加密参数
      • 不断debug,找到入参(原始参数),加密函数
      • 重写
  • jieba分词效果
    • 需要不断的尝试,找出合适的自定义词典,然后才能更好的进行分词。

总结

面试官问这样的问题,他为什么这样问,他为什么这样思考,他想通过这个问题考察我们哪些能力?
相比于直接骂面试官sb,倒不如改变下我们的思考方式,认知方式。
认知三部曲

发布了33 篇原创文章 · 获赞 21 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/u013356254/article/details/98793438