python爬取网易云歌曲名字

之前都是按部就班的往下写, 终于尝试在爬虫里写函数了

网址:https://music.163.com/#/artist?id=9272,爬取这50首歌的名字。分析网址:网易云主页是https://music.163.com,所以可以知道对于不同的歌手都有一个对应的id,像这样就需要将参数传入url中 ,另外浏览器标识headers是不变的header(写爬虫最关键的便是与反爬虫之间的斗争,因而我们要养成良好的习惯,学会构造头部)。

import requests
import re

url='https://music.163.com/artist'

def get_html(url):

    headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.63 Safari/537.36'
               }
    params = {
        'id': '9272'
             }

    #通过Request()方法构造一个请求对象
    response = requests.get(url, headers=headers,params=params)
    html=response.text
    print(type(html))   #str
    return html

def parse_html(html):

    #遇见
    pattern=re.compile('(.*?)')
    names=re.findall(pattern,html)
    print(len(names))
    for name in names:
         print(name)

if __name__ == '__main__':
    html=get_html(url)
    f = open("out.txt","w",encoding='utf-8') #添加encoding='utf-8'可以解决'gbk' codec can't encode character '\xa9'
    f.write(html)      #将html写入txt文件
    parse_html(html)

注意谷歌浏览器喜欢在同一标签页积累网页,所以打开的网页源代码可能是之前网页的,所以最好将爬取的网页新建一个标签页(这个问题在这次爬虫困扰了自己很久)。

python爬取网易云歌曲名字_第1张图片

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