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

首先,需要说明的是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日

相关文章

  • html+css实现图片扫描仪特效

    实现图片扫描仪特效可以通过HTML和CSS的结合来完成。下面是具体的攻略: 步骤1:准备材料 首先,我们需要准备一张需要扫描的图片,可以是本地的图片或者是远程图片。然后,根据这张图片的大小来选择生成的小图的数量,一般来说,每行生成5个到10个小图比较合适。 步骤2:创建HTML结构 接下来,我们需要创建HTML结构,以便后续加入CSS样式。我们可以创建一个d…

    css 2023年6月10日
    00
  • Vue学习笔记进阶篇之单元素过度

    下面是“Vue学习笔记进阶篇之单元素过度”的完整攻略: 什么是单元素过度 我们在网页中进行跳转或某些操作时,页面的变化是瞬间完成的,这样会给用户一个突兀的感觉。为了让页面的变化更加自然,我们可以使用过渡动画效果。在Vue中,可以通过内置的过渡类实现元素间的过渡效果。单元素过渡是指在一个元素的状态之间进行切换时,自动应用过渡效果。 单元素过度的实现 使用Vue…

    css 2023年6月10日
    00
  • CSS3实现炫酷的切片式图片轮播效果

    下面是“CSS3实现炫酷的切片式图片轮播效果”的完整攻略。 一、实现思路 利用CSS3的@keyframes创建动画关键帧。 使用transform属性实现图片翻转和平移。 利用position: absolute和z-index属性实现图片层叠和切片效果。 使用animation属性激活动画关键帧。 二、代码实现 以下是一个基础版的切片式图片轮播效果。 H…

    css 2023年6月9日
    00
  • UL、LI 无序列表实现纯CSS网站导航菜单

    实现纯CSS网站导航菜单需要使用无序列表(UL)和列表项(LI),将菜单内容放置在列表项中,然后使用CSS样式来控制菜单的呈现。 下面是实现纯CSS网站导航菜单的步骤: 1. 创建无序列表 使用<ul>标签来创建无序列表,将菜单项目放置在每个列表项(<li>)中,如下所示: <ul> <li><a hre…

    css 2023年6月10日
    00
  • CSS3属性使网站设计增强同时不消弱可用性

    当使用CSS3属性时,我们需要注意以下几点,才能使网站设计增强而不消弱可用性: 1. 逐步增强设计 为了保证网站的可用性,我们可以逐步对网站进行设计增强。例如,我们可以先使用不依赖于CSS3的标准CSS属性来设计网站,然后再逐步引入CSS3属性,这样可以确保设计增强不会影响网站的可用性。 2. 使用媒体查询 媒体查询可以根据设备屏幕的大小、设备分辨率、设备方…

    css 2023年6月10日
    00
  • css样式important规则的正确使用方式

    下面是“CSS样式important规则的正确使用方式”的完整攻略: 正确使用important规则 仅在必要时使用important规则 在开发网站时,有时可能会遇到无法通过其他方式覆盖特定CSS样式的情况。这时候可以考虑使用important规则来强制使用该样式。但是,important规则应该只在必要时使用。如果在大量使用important规则,将变得…

    css 2023年6月9日
    00
  • JavaScript DOM操作表格及样式

    下面是JavaScript DOM操作表格及样式的完整攻略: 1. DOM操作基本概念 DOM(文档对象模型)是一种用来处理HTML和XML文档的编程接口,它把整个文档抽象成一个文档树,树中的每个节点都是一个对象,可以用JavaScript来操作这些对象,从而对页面进行动态的改变。 通过DOM操作,可以实现很多功能,比如:改变HTML元素内容、改变CSS样式…

    css 2023年6月9日
    00
  • JavaScript选择器函数querySelector和querySelectorAll

    JavaScript选择器函数querySelector和querySelectorAll 在JavaScript中,querySelector和querySelectorAll是两个非常有用的选择器函数,它们可以在DOM树中匹配元素并且返回一个元素或元素列表。 querySelector querySelector接收一个CSS选择器,返回与该选择器匹配的…

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