Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单

yizhihongxing

首先,需要说明的是Scrapy是一个强大的Python爬虫框架,可以帮助我们快速高效地爬取网页信息。但是对于一些需要登录后才能访问的网站,我们需要使用到Selenium来实现模拟浏览器登录,获取cookie后使用Scrapy进行后续的爬取。

下面是大致的操作流程:

  1. 安装Scrapy和Selenium库
pip install scrapy selenium
  1. 安装浏览器驱动

你需要根据你正在使用的浏览器下载相应的驱动程序

Chrome浏览器驱动下载地址:http://npm.taobao.org/mirrors/chromedriver/

Firefox浏览器驱动下载地址:https://github.com/mozilla/geckodriver/releases

  1. 使用Selenium模拟用户登录
from selenium import webdriver
import time

driver = webdriver.Chrome() #启动Chrome浏览器
driver.get("https://music.163.com/") #打开网易云音乐首页
time.sleep(2) # 暂停2秒,等待页面加载

# 点击登录按钮
driver.switch_to.frame("contentFrame")
login_button = driver.find_element_by_css_selector("a[href='javascript:;']")
login_button.click()
time.sleep(1)

# 切换到账号密码登录
driver.switch_to.frame("contentFrame")
login_method = driver.find_element_by_css_selector("a[data-action='login']")
login_method.click()
time.sleep(1)

# 输入账号密码
driver.switch_to.frame("contentFrame")
username_input = driver.find_element_by_name('username')
password_input = driver.find_element_by_name('password')
username_input.send_keys("your_username")
password_input.send_keys("your_password")
time.sleep(1)

# 点击登录
login_btn = driver.find_element_by_css_selector(".j-primary")
login_btn.click()
time.sleep(2)

# 保存cookie
cookies = driver.get_cookies()
driver.quit()

使用Selenium模拟用户登录,向网站提交账号密码,完成登录操作。在获取cookie之前需要等待一段时间,否则可能会出现cookie没有完全加载的情况。

  1. 使用Scrapy爬取数据

在获取到cookie之后,我们就可以利用Scrapy进行数据爬取了。这里举一个例子,爬取网易云音乐个人喜爱歌单的所有歌曲信息。

import scrapy

class MyMusicSpider(scrapy.Spider):
    name = 'my_music_spider'
    allowed_domains = ['music.163.com']
    start_urls = ['https://music.163.com/']

    def start_requests(self):
        # 添加cookie信息,模拟登录状态
        cookie = {i['name']: i['value'] for i in cookies}
        headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.82 Safari/537.36'}
        yield scrapy.Request(self.start_urls[0], headers=headers, cookies=cookie)

    def parse(self, response):
        # 解析个人喜爱歌单url
        url = response.css('a[href="/my/music?type=loved"]').attrib['href']
        yield response.follow(url, self.parse_music_list)

    def parse_music_list(self, response):
        # 获取歌单中的所有歌曲信息
        for song_item in response.css('.srchsongst .item'):
            song_name = song_item.css('.ttl a b::text').get()
            singer_name = song_item.css('.text a::text').get()
            print(song_name, singer_name)

上述代码中是一个Scrapy爬虫的基本框架,其中使用了之前获取到的cookie信息,模拟登录状态。然后通过解析网页内容,找到个人喜爱歌单的url,进而获取其中的所有歌曲信息。

至此,我们完成了Scrapy和Selenium配合进行自动登录爬取网易云音乐个人喜爱歌单的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • css实现的滑动鼠标到img后切换图片移开恢复默认

    想要实现“滑动鼠标到img后切换图片”,一般可以通过CSS中的:hover伪类绑定图片的背景,实现移动到图片上的时候鼠标指针会变成手型,同时图片背景也会发生改变。而“移开恢复默认”可以通过给img标签添加鼠标离开事件mouseout来实现。 以下是具体的实现步骤: 创建一个包含想要实现效果的img标签。 <img src="img1.jpg&…

    css 2023年6月10日
    00
  • 使用Vue-cli 3.0搭建Vue项目的方法

    使用Vue-cli 3.0搭建Vue项目的方法 Vue-cli 3.0是一款非常强大的Vue.js项目脚手架工具,可以帮助我们快速搭建起一个具备Vue.js开发所需的基础配置的项目框架。本文将详细介绍如何使用Vue-cli 3.0搭建Vue项目的方法。 步骤一:安装Vue-cli 3.0 要使用Vue-cli 3.0,首先需要在本地安装Node.js环境。安…

    css 2023年6月10日
    00
  • 基于vue打包后字体和图片资源失效问题的解决方法

    这里介绍一下解决“基于vue打包后字体和图片资源失效”这个问题的几种方法。 方法一:使用相对路径 在vue.config.js中,设置publicPath属性为“./”即可。这样打包后的文件中就会使用相对路径来引用资源,就不会出现资源失效的问题了。 module.exports = { publicPath: ‘./’, }; 这是一篇示例:在Vue打包后,…

    css 2023年6月9日
    00
  • jQuery子属性过滤选择器用法分析

    以下是关于“jQuery子属性过滤选择器用法分析”的完整攻略: 什么是jQuery子属性过滤选择器? 在jQuery中,我们可以使用选择器来选取特定的元素。而子属性过滤选择器是一种特殊的选择器,它可以根据元素的子属性来筛选元素。 语法格式 子属性过滤选择器的语法格式如下: $("[attribute$=’value’]") 其中 attr…

    css 2023年6月10日
    00
  • 纯CSS实现圆角折叠菜单的方法

    关于纯CSS实现圆角折叠菜单,我可以提供以下攻略: 步骤一:HTML结构 首先,我们需要准备一个基本的HTML结构,包含菜单的外层容器和内部的菜单项列表。例如: <div class="menu"> <ul> <li><a href="#">菜单项1</a>&…

    css 2023年6月10日
    00
  • JS+CSS实现六级网站导航主菜单效果

    一、目标与需求 我们的目标是实现六级网站导航主菜单效果,需求如下: 实现简洁明了的导航栏效果; 支持鼠标移入触发下拉菜单; 支持二级、三级、四级、五级、六级菜单的显示。 二、HTML结构 <nav class="nav-menu"> <ul> <li><a href="#"&g…

    css 2023年6月10日
    00
  • 容易忽略的CSS特性

    容易忽略的CSS特性 在CSS中,有一些特性很容易被忽略,但它们对于网页的设计和开发非常重要。本攻略将详细讲解这些容易忽略的CSS特性,包括基本原理、使用方法和示例说明。 1. text-transform text-transform属性用于控制文本的大小写。它可以接受以下值: none:默认值,不改变文本大小写。 capitalize:将每个单词的首字母…

    css 2023年5月18日
    00
  • 宽度高度不固定的div 如何水平居中以及垂直居中

    在网页设计中,我们经常需要将宽度高度不固定的 div 元素水平居中以及垂直居中,以使其更好地适应页面布局。下面是一个完整攻略,包含了如何使用 CSS 将 div 元素水平居中以及垂直居中的过程和两个示例说明。 CSS 如何将 div 元素水平居中以及垂直居中的过程 1. 使用 flexbox 布局 我们可以使用 CSS 的 flexbox 布局来将 div …

    css 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部