好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > Scrapy+Selenium自動獲取cookie爬取網易云音樂個人喜愛歌單

Scrapy+Selenium自動獲取cookie爬取網易云音樂個人喜愛歌單

熱門標簽:400電話在線如何申請 智能電話機器人調研 江門智能電話機器人 天津塘沽區地圖標注 滴滴地圖標注公司 甘肅高頻外呼系統 如何申請400電話代理 地圖標注可以遠程操作嗎 杭州房產地圖標注

此貨很干,跟上腳步!!!
Cookie
cookie是什么東西?
小餅干?能吃嗎?
簡單來說就是你第一次用賬號密碼訪問服務器
服務器在你本機硬盤上設置一個身份識別的會員卡(cookie)
下次再去訪問的時候只要亮一下你的卡片(cookie)
服務器就會知道是你來了,因為你的賬號密碼等信息已經刻在了會員卡上
需求分析
爬蟲要訪問一些私人的數據就需要用cookie進行偽裝
想要得到cookie就得先登錄,爬蟲可以通過表單請求將賬號密碼提交上去
但是在火狐的F12截取到的數據就是,
網易云音樂先將你的賬號密碼給編了碼,再發post請求
所以我們在準備表單數據的時候就已經被卡住了
這時候我們就可以使用自動化測試Selenium幫助我們去登錄
登錄好之后就獲取cookie給爬蟲使用

OK,廢話也廢話完了,直接開整吧!!
首先跟我創建一個爬蟲項目和爬蟲
在cmd創建

用Pycharm打開這個項目

首先修改配置文件setting.py
1.關閉機器人協議
2.取消禁用cookie的功能

現在就回到爬蟲文件wyySpider.py準備前期的工作
修改start_urls里的網址準備一個請求頭
首先用火狐瀏覽器打開網易云音樂,登錄后進入到個人主頁


在爬蟲代碼那里準備一下,修改一下start_urls

import scrapy
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time

class WyyspiderSpider(scrapy.Spider):
  name = 'wyySpider'
  allowed_domains = ['163.com']
  start_urls = ['https://music.163.com/playlist?id=19xxxxx7']

先實現一下自動登錄功能獲取cookie
首先導一下自動化測試的包(Selenium)
沒有這個包的話去控制臺:pip --default-timeout=100 install selenium -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time

導完包還要一個谷歌的驅動程序,先看一下自己的谷歌版本

到這網站下載相同版本的驅動程序:https://sites.google.com/a/chromium.org/chromedriver/home

如果版本跟我的一樣可以去網盤下載:
鏈接: https://pan.baidu.com/s/1M-gME2R8EEhEoFlPaDhbmA 提取碼: 7iai

解壓后記住這個驅動的位置,在爬蟲文件寫一個獲取cookie的函數
以下代碼的坐標不一定適合各位的電腦,不過給你們安利個物理外掛(電腦微信截圖Alt+A)

 def getCookie(self):
    # 獲取谷歌的驅動,參數為剛剛驅動程序的位置
    driver = webdriver.Chrome("C:/Users/Administrator/AppData/Local/Programs/Python38/Lib/site-packages/selenium/webdriver/chrome/chromedriver.exe")
    # -----------------selenium自動登錄-----------------------

    # 打開谷歌然后訪問指定的網站
    driver.get("https://music.163.com/")

    # 最大化,睡眠是怕網速慢沒加載出來
    driver.maximize_window()
    time.sleep(1)

    # 鼠標從(0,0)向x(1435px),y(35px)移動,用左鍵點擊一下
    ActionChains(driver).move_by_offset(1435, 35).click().perform()
    time.sleep(0.3)

    # 點擊其他方式
    ActionChains(driver).move_by_offset(-480, 575).click().perform()
    time.sleep(0.3)

    # 同意條款
    ActionChains(driver).move_by_offset(-218, -10).click().perform()
    time.sleep(0.3)

    # 手機登錄
    ActionChains(driver).move_by_offset(107, -100).click().perform()
    time.sleep(0.3)

    # 輸入賬號密碼
    # 通過css選擇器獲取id為"p"的標簽,然后send_keys就是模擬輸入一些信息
    driver.find_element_by_css_selector("#p").send_keys("賬號")
    driver.find_element_by_css_selector("#pw").send_keys("密碼")
    time.sleep(0.3)

    # 點擊登錄
    ActionChains(driver).move_by_offset(110, 15).click().perform()
    time.sleep(1)

    # 找到頭像懸浮
    img = driver.find_element_by_css_selector("div.head:nth-child(1) > img:nth-child(1)")
    ActionChains(driver).move_to_element(img).perform()
    time.sleep(0.5)
    # 點擊我的主頁
    ActionChains(driver).move_by_offset(0, 40).click().perform()
    time.sleep(0.5)
    # 點擊喜歡的音樂
    ActionChains(driver).move_by_offset(-870, 830).click().perform()
    time.sleep(0.3)

    # -----------------selenium自動登錄-----------------------

登錄完畢后就可以獲取cookie,但看一下下面的cookie

[{'domain': 'music.163.com', 'expiry': 2147483647, 'httpOnly': False, 'name': 'WM_TID', 'path': '/', 'secure': False, 'value': 'UnQj6SSNqN9BEVdubmNcEjpl%2B9DA'}, {'domain': 'music.163.com', 'expiry': 2147483647, 'httpOnly': False, 'name': 'WM_NIKE', 'path': '/', 'secure': False, 'value': '9ca17ae2e6ffcda170e2e6ee87f4508ef58483ea4a97968ea7c54e879a8eaaf445aebc83b6e933f3f1c0b4c82af0fea7c3b92af697b7a6dc7b82afc09ad98ca695bc5082ecbcb1e772b7889b3d1c15bf28da0bbfb5b95aa8795f073adbc9c98ed79a28d8aa7f450f1ae9dd9b77a85edbf9ac625f1ef84d8f970b4e7bfd8cd21b48e8c8ec17df3e7a898f74488ef9bb5c837e2a3'}, {'domain': '.music.163.com', 'httpOnly': False, 'name': 'WNMCID', 'path': '/', 'sameSite': 'Strict', 'secure': False, 'value': 'fdygqk.1611989994304.01.0'}, {'domain': '.music.163.com', 'httpOnly': False, 'name': 'WEVNSM', 'path': '/', 'sameSite': 'Strict', 'secure': False, 'value': '1.0.0'}, {'domain': 'music.163.com', 'expiry': 2147483647, 'httpOnly': False, 'name': 'WM_NI', 'path': '/', 'secure': False, 'value': '6IyEYqBqpyZMITjt9DB4tPdzuXUFC%2BNyOiu3S04CTC5Nsv2Q4gkMM0BQ2SPZxQWvItmyodTwnsbSFFqD3rS84rG3qyG%2F31L7zdp9q7N%2BpRDmBw19hwtHD1UTE%3D'}, {'domain': '.music.163.com', 'expiry': 1927349994, 'httpOnly': False, 'name': 'NMTID', 'path': '/', 'secure': False, 'value': '00O-pWx8ZDJJQfiFkHzsgin07nYSmUAAAF3UhdN2w'}, {'domain': '.163.com', 'expiry': 4765589994, 'httpOnly': False, 'name': '_ntes_nuid', 'path': '/', 'secure': False, 'value': '738fc9cd89d6d8799fa76b3348d25d7d'}, {'domain': '.163.com', 'expiry': 4765589994, 'httpOnly': False, 'name': '_ntes_nnid', 'path': '/', 'secure': False, 'value': '738fc9cd89d6d8799fa76b3348d25d7d,1611989994150'}, {'domain': '.music.163.com', 'expiry': 1769671794, 'httpOnly': False, 'name': '_iuqxldmzr_', 'path': '/', 'secure': False, 'value': '32'}, {'domain': '.music.163.com', 'expiry': 1769671794, 'httpOnly': False, 'name': 'JSESSIONID-WYYY', 'path': '/', 'secure': False, 'value': 'OoCMxNwGV%5CfZD2OSzAXovf4ASVZsJ8UQ4sgg7JfH075cKTD%2FW3sMzZj%2BpayS1EnNVXzRm%2F2GxfzIoNv3FTjYxKeNFZWqf6UeiMSc1%2BG98kgsEM94juuE%5Cs18k2%2BPNPAp3hU0G%5CFDUtjkimCR5pgOIOI%3A1611991794102'}]

是列表加字典的結構,而Scrapy的cookie是字符串類型的,所以我們要做一個轉型

# 將driver獲取的字典類型的cookie提取name和value封裝成字符串
    temp = []
    for i in driver.get_cookies():
      temp.append(i['name'] + "=" + i['value'])
    # 返回字符串cookie
    return ';'.join(temp)

所以這個函數基本就寫完了,自動登錄后獲取cookie是不是很爽!!!
現在重寫一下def start_requests(self),這個函數是在請求發起前執行的

在這個函數把請求頭給塞進去,因為setting那邊沒有定義

def start_requests(self):
    # 定義請求頭的時候調用一下getCookie獲取一下cookie
    headers = {
      'Cookie': self.getCookie(),
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
    }
    # 注意url是個列表這里拿下標[0],然后把headers請求頭塞進去,交給parse函數
    yield scrapy.Request(url=self.start_urls[0], headers=headers, callback=self.parse)

請求前一切準備好之后,在解析函數(parse)進行保存一下數據,記得導re包

def parse(self, response):
    # 匹配歌曲名的正則表達式
    patt = re.compile(r'a href="/song.id=.*?">([^|{]*?)/a>')

    # 找到所有歌曲名
    listdata = re.findall(patt, response.text)
    
    # 把數據寫進txt文件
    with open(file="../response.txt", mode="w+", encoding="utf-8") as file:
      for item in listdata:
        file.write(item+"\n")

一句啟動爬蟲的命令,眨眨眼的時間 ~
數據就進去了哦!原來我的喜愛歌單只有不到500~

下面就是爬蟲源代碼

import scrapy
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time
import re

class WyyspiderSpider(scrapy.Spider):
  name = 'wyySpider'
  allowed_domains = ['163.com']
  start_urls = ['https://music.163.com/playlist?id=19xxxxx7']

  def getCookie(self):
    # 獲取谷歌的驅動,參數為剛剛驅動程序的位置
    driver = webdriver.Chrome("C:/Users/Administrator/AppData/Local/Programs/Python38/Lib/site-packages/selenium/webdriver/chrome/chromedriver.exe")
    # -----------------selenium自動登錄-----------------------

    # 打開谷歌然后訪問指定的網站
    driver.get("https://music.163.com/")

    # 最大化,睡眠是怕網速慢沒加載出來
    driver.maximize_window()
    time.sleep(1)
		# 以下坐標以自己的電腦為準
    # 鼠標從(0,0)向x(1435px),y(35px)移動,用左鍵點擊一下
    ActionChains(driver).move_by_offset(1435, 35).click().perform()
    time.sleep(0.3)

    # 點擊其他方式
    ActionChains(driver).move_by_offset(-480, 575).click().perform()
    time.sleep(0.3)

    # 同意條款
    ActionChains(driver).move_by_offset(-218, -10).click().perform()
    time.sleep(0.3)

    # 手機登錄
    ActionChains(driver).move_by_offset(107, -100).click().perform()
    time.sleep(0.3)

    # 輸入賬號密碼
    # 通過css選擇器獲取id為"p"的標簽,然后send_keys就是模擬輸入一些信息
    driver.find_element_by_css_selector("#p").send_keys("賬號")
    driver.find_element_by_css_selector("#pw").send_keys("密碼")
    time.sleep(0.3)

    # 點擊登錄
    ActionChains(driver).move_by_offset(110, 15).click().perform()
    time.sleep(1)

    # 找到頭像懸浮
    img = driver.find_element_by_css_selector("div.head:nth-child(1) > img:nth-child(1)")
    ActionChains(driver).move_to_element(img).perform()
    time.sleep(0.5)
    # 點擊我的主頁
    ActionChains(driver).move_by_offset(0, 40).click().perform()
    time.sleep(0.5)
    # # 點擊喜歡的音樂
    # ActionChains(driver).move_by_offset(-870, 830).click().perform()
    # time.sleep(0.3)


    # -----------------selenium自動登錄-----------------------

    # 將driver獲取的字典類型的cookie提取name和value封裝成字符串
    # 臨時存放每個拼接好的key=value字符串
    temp = []

    # 遍歷driver給的cookies字典
    for i in driver.get_cookies():
      temp.append(i['name'] + "=" + i['value'])

    # 返回字符串cookie
    return ';'.join(temp)

  def start_requests(self):
    # 定義請求頭的時候調用一下getCookie獲取一下cookie
    headers = {
      'Cookie': self.getCookie(),
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.104 Safari/537.36'
    }
    # 注意url是個列表這里拿下標[0],然后把headers請求頭塞進去,交給parse函數
    yield scrapy.Request(url=self.start_urls[0], headers=headers, callback=self.parse)

  def parse(self, response):
    # 匹配歌曲名的正則表達式
    patt = re.compile(r'a href="/song.id=.*?">([^|{]*?)/a>')

    # 找到所有歌曲名
    listdata = re.findall(patt, response.text)

    # 把數據寫進txt文件
    with open(file="response.txt", mode="w+", encoding="utf-8") as file:
      for item in listdata:
        file.write(item+"\n")

到此這篇關于Scrapy+Selenium自動獲取cookie爬取網易云音樂個人喜愛歌單的文章就介紹到這了,更多相關Scrapy+Selenium爬取網易云音樂內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Selenium獲取登錄Cookies并添加Cookies自動登錄的方法
  • Selenium webdriver添加cookie實現過程詳解
  • selenium中get_cookies()和add_cookie()的用法詳解
  • Python Selenium Cookie 繞過驗證碼實現登錄示例代碼
  • 利用selenium 3.7和python3添加cookie模擬登陸的實現
  • Python中Selenium對Cookie的操作方法

標簽:漢中 長春 重慶 臨汾 廊坊 河池 德宏 東莞

巨人網絡通訊聲明:本文標題《Scrapy+Selenium自動獲取cookie爬取網易云音樂個人喜愛歌單》,本文關鍵詞  Scrapy+Selenium,自動,獲取,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Scrapy+Selenium自動獲取cookie爬取網易云音樂個人喜愛歌單》相關的同類信息!
  • 本頁收集關于Scrapy+Selenium自動獲取cookie爬取網易云音樂個人喜愛歌單的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 欧美精品一区二区三区无码视频| china国产绿奴视频在线| 吻胸娇喘吃奶大尺度视频| 91在线无码精品秘?黑桃| 国产呦系列呦| 久久精品亚洲青青草原| 杏吧小飞| 蜜桃Av成人午夜视频| 高启兰被肉干高H潮文不断| 黄色抖音版免费| 欧日韩视频777888| 精品国产91高清在线观看| 黄三级视频| 国产亚洲欧美另类久久久| 极品人妖TS重口系列| 91嫩草国产丨精品入口麻豆| 美女日批免费视频| 夜夜草导航| 12~13女人A级毛片| 色婷婷在线无码精品秘?人口传媒 99精品国产亚洲AV无码 | 免费无遮挡??漫画网站下载樱桃| 国产永久高清免费动作片www| 日韩亚洲欧美在线| 日本福利视频| 悄悄解开了岳的乳罩第一章| 久久亚洲欧美日韩精品专区| 久久国产成人精品| 性xxxxfreexxxx孕妇| 边摸边吃奶一边做爰H漫画软件| 久久精品国产亚洲综合一| 天天操天天舔天天射| 欧洲vodafonewifi一区| 午夜精品一区| yin乱合集三代同床| 他扒开她下面的粉嫩p的视频| 在线播放国产麻豆| 欧美日韩中文字幕无码三区小说| 美女一级A片| 国产亚洲一区二区麻豆| 日本动漫艳母| 大片全部在线免费观看|