我是靠谱客的博主 幸福绿茶,最近开发中收集的这篇文章主要介绍beautifulsoup 提取html 页面的数据做一个网易云音乐的评论数据提取,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

做一个网易云音乐的评论数据提取

思路:下载网页,使用beautifulsoup 提取

  • 首先下载beautifulsoup
    去官网下载了最新的版本。beautifulsoup 4-4.6.0。
    安装过程,输入from bs4 import BeautifulSoup 命令后出现错误,就是将Python2 版本的代码要在Python3 中运行,所以报错。
    解决方法:换了好几种方法。。。转换代码2to3 失败了,重新下载了bs,还是失败了,重装了Python。。然后又把requests 模块给装了一遍,还是没用,不过歪打正着,发现的确需要这个模块。 最后把cmd 在管理员下运行,成功了!

接下来就说一下具体的步骤啦:

  1. 把网页中有关评论的内容下载下来。比如 http://music.163.com/#/song?id=17518571 按住F12 调出网页源代码,找到与评论相关的地方。然后把网页内容保存在一个文件中。代码如下:
import requests

def get_url(url):
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36'}

    res = requests.get(url, headers=headers)

    return res

def main():
    url = input("请输入链接地址:")
    res = get_url(url)

    with open("res.txt", "w", encoding="utf-8") as file:
        file.write(res.text)

if __name__ == "__main__":
    main()
  1. 文件已经生成了,但是查找一下有没有相关的评论,no…找不到。然后发现浏览器的呈现的这些内容不是全都在一个文件夹中,而是存在于多个文件,那么就去找一下好啦~
    这么文件怎么找嘞,方法就是让浏览器慢慢的加载,然后出现了想要的文件之后立刻停止加载。然后查看文件的内容。
    在这里找到了两个服务器需要的内容,就是 params 和encSenkey .将这两段数据以json 的格式传给服务器。

  2. 接下来就是完整的代码啦

import requests

def get_comments(url):
    # 给它传个 referer 以免服务器疑神疑鬼的@_@
    # 当然,你这有时间的话将headers头部填写完整,那样妥妥会更好一些……
    headers = {
        'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36',
        'referer': 'http://music.163.com/'
        }

    params = "EuIF/+GM1OWmp2iaIwbVdYDaqODiubPSBToe5EdNp6LHTLf+aID/dWGU6bHWXS0jD9pPa/oY67TOwiicLygJ+BhMkOX/J1tZMhq45dcUIr6fLuoHOECYrOU6ySwH4CjxxdbW3lpVmksGEdlxbZevVPkTPkwvjNLDZHK238OuNCy0Csma04SXfoVM3iLhaFBT"
    encSecKey = "db26c32e0cd08a11930639deadefda2783c81034be6445ca8f4fbedd346e1f9567375083aeb1a85e6ad6d9ae4532a49752c2169db8bcc04d38a79f9bed7facea42ee23f1b33538c34f82741318d9b4b846663b53b0b808dd0499dccfbc6c61fbf180c6fb24b1c2dd3c2c450ce09917d74be9424dab836fd2e671988ffbc6ae1b"
    data = {
        "params": params,
        "encSecKey": encSecKey
        }

    name_id = url.split('=')[1]
    target_url = "http://music.163.com/weapi/v1/resource/comments/R_SO_4_{}?csrf_token=".format(name_id)

    res = requests.post(target_url, headers=headers, data=data)

    return res

def main():
    url = input("请输入链接地址:")
    res = get_comments(url)
    with open("data.txt", "w", encoding="utf-8") as file:
        file.write(res.text)

if __name__ == "__main__":
    main()

最后

以上就是幸福绿茶为你收集整理的beautifulsoup 提取html 页面的数据做一个网易云音乐的评论数据提取的全部内容,希望文章能够帮你解决beautifulsoup 提取html 页面的数据做一个网易云音乐的评论数据提取所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(43)

评论列表共有 0 条评论

立即
投稿
返回
顶部