爬虫案例:爬取网易云热门评论

对网易使用普通的办法是不行的。。因为那些热门评论都在别的源文件中,在网页的源代码里是找不到的

所以我们要在加载的源文件里面找到热门评论的文件。。。。。。

方法就是:在netwoek这个控制面板里,减慢加载网页,当评论加载出来时停止,这时加载的文件里就有我们要的热评了。
爬虫案例:爬取网易云热门评论_第1张图片
然后在文件中翻一翻就找到了。。。在 R_SO_4。。。。的文件中
这是一个post 请求,也就是说我们要给服务器一些数据才行,就是里面的params和 encSecKey。。复制下来发个服务器就好

import requests
import json
import re

def get_res(url):
    proxy = {'http':'175.42.158.68:9999'}   # 最好使用代理,万一网易把你IP干掉了,,,,
    
    # 请求头最好多复制一些,尤其时 referer,这个判断请求从哪来的。    
    headers={'referer': 'https://music.163.com/','user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36'}  # 
    data = {'params': '01pI79cCuSkgm0oBZNONwkka7QmoL8K/c/42xxnWbCpjYXQxggDkkCjq/X5OdzlQBGpbp5XJZenZ068IAnNHUCudfP7OD2ZjYfSgOStX/zRD/xwOFrrdChkCjg4PIK+D9lOzlNflIER6HlapB3RGNryfkWLRtAoYru2Q6cBJdlKjjYqK86haurxNLdlEGng+'
,'encSecKey': '441d8c1603658f2331739fc391abcd6eb27c938108adf1589b443d8549cb0c8f589297d022434c266adabf1b3bcb48b4e9aaaf44eefd2dc53ae40ccc2605c2fdeea94e80e310784edfac4fd3e151d8d5993640fd595e03991665c4b0ebb0c89fc7f11f12654b5718e3560dfc44e13600651112308f23791874a69d0c62f0e883'}    
    
    # 这个url 是在我们发现热评的文件里的 url ,虽然打开这个网站是空白的
    name_id = url.split('=')[1]
    target_url = 'https://music.163.com/api/v1/resource/comments/R_SO_4_{}?csrf_token='.format(name_id)
    res = requests.post(target_url,headers = headers,data=data,proxies=proxy)
    return res

def get_data(res):
    comments_json = json.loads(res.text)   # 得到的是json 形式的数据
    hot_comments = comments_json['hotComments']
    with open('hotcomments.txt','w',encoding='utf-8') as f:
        for each in hot_comments:
            f.write(each['user']['nickname']+':\n\n')
            f.write(each['content']+'\n')
            f.write('------------------\n')
    
def main():
    url = input('输入链接:')
    res = get_res(url)
    get_data(res)

if __name__ == '__main__':
    main()

你可能感兴趣的:(爬虫)