一、主题式网络爬虫设计方案
1.主题式网络爬虫名称:爬取网易云音乐歌单
2.主题式网络爬虫爬取的内容与数据特征分析
爬取网易云音乐歌单前十页歌单,轻音乐类型的歌单名称、歌单播放量、歌单链接、用户名称。
分析歌单播放量和歌单标题关键词
3.主题式网络爬虫设计方案概述(包括实现思路与技术难点)
实现思路:使用单线程爬取,初始化信息,设置请求头部信息,获取网页资源,使用etree进行网页解析,爬取多页时刷新offset,将爬取数据保存到csv文件中。
难点:使用的翻页形式为URL的limit和offset参数,发送的get请求时froms和url的参数要一至。
第一步:找IP资源
IP资源并不丰富,换句话说是供不应求的,因此一般是使用动态IP。
免费方法,直接在网络上找,在搜索引擎中一搜索特别多能够提供IP资源的网站,进行采集即可。
付费方法,通过购买芝麻代理上的IP资源,并进行提取,搭建IP池。
1.数据爬取与采集
from urllib import parse
from lxml import etree
from urllib3 import disable_warnings
import requests
import csv
class Wangyiyun(object):
def __init__(self, **kwargs):
# 歌单的歌曲风格
self.types = kwargs['types']
# 歌单的发布类型
self.years = kwargs['years']
# 这是当前爬取的页数
self.pages = pages
# 这是请求的url参数(页数)
self.limit = 35
self.offset = 35 * self.pages - self.limit
# 这是请求的url
self.url = "https://music.163.com/discover/playlist/?"
# 设置请求头部信息(可扩展:不同的User - Agent)
def set_header(self):
self.header = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.103 Safari/537.36"