(一)前言
1.觉得腻?
听说你们觉得爬取评论已经腻歪了,今天鹏二就带你们一起爬取你的那个(他,她)或者欧巴的心动歌曲,话不多说,我们正题开始!
2.来解腻
今天我们就用各种方法进行爬取尝试,带大家一步步爬取到心动音乐
(二)准备工作
所用技术
2.1 requests+Beautifulsoup
requests获取网页内容
Beautifulsoup对获取内容进行解析,拿到相应数据
2.2 selenium
通过selenium自动化直接加载相应网页进行定位元素和内容获取
2.3 requests+Beautifulsoup+cookie
(三)网页分析
3.1网址说明和页面分析
本次爬取页面为羽肿喜欢的音乐
由于网页版只加载喜欢音乐前20个,因此我们只爬前20个
网址:https://music.163.com/#/playlist?id=408260494
3.2元素定位
红框部分即为音乐名所在处,这个找起来很麻烦,不过掌握规律后还是很快的
下面我们分析这个请求
请求视图
请求相应
(四)开始爬取
4.1 requests+Beautifulsoup
import requests
from bs4 import BeautifulSoup
headers={
"user-agent":"chrome/10"
}
r=requests.get("https://music.163.com/playlist?id=2092096875",headers=headers,timeout=300)
print(r.status_code)#打印响应码
demo=r.text
f=open("羽肿.html","w",newline="",encoding="utf-8")
#将网页源代码写进文件
f.write(demo)
soup=BeautifulSoup(demo,"html.parser")#解析内容
ul=soup.find("ul","f-hide")
for item in ul.find_all("a"):
print(item.text)
不知道为什么?那我们看看获取到的文件渲染到浏览器是什么样子:
为啥404?
很简单,没登录;那你们要说简单了,用selenium呗,好,下面我们试试selenium进行网易登录
4.2 selenium
再次分析登录情况
哎,我们只用过selenium进行输入登录,这是啥?这是啥?真头大;
看来我们只能另外想别的办法,看最后一个方法吧
4.3requests+Beautifulsoup+cookie
cookie
Cookie 并不是它的原意“甜饼”的意思, 而是一个保存在客户机中的简单的文本文件, 这个文件与特定的 Web 文档关联在一起, 保存了该客户机访问这个Web 文档时的信息, 当客户机再次访问这个 Web 文档时这些信息可供该文档使用。由于“Cookie”具有可以保存在客户机上的神奇特性, 因此它可以帮助我们实现记录用户个人信息的功能, 而这一切都不必使用复杂的CGI等程序 [2] 。
举例来说, 一个 Web 站点可能会为每一个访问者产生一个唯一的ID, 然后以 Cookie 文件的形式保存在每个用户的机器上。如果使用浏览器访问 Web, 会看到所有保存在硬盘上的 Cookie。在这个文件夹里每一个文件都是一个由“名/值”对组成的文本文件,另外还有一个文件保存有所有对应的 Web 站点的信息。在这里的每个 Cookie 文件都是一个简单而又普通的文本文件。透过文件名, 就可以看到是哪个 Web 站点在机器上放置了Cookie(当然站点信息在文件里也有保存) [2] 。
获取cookie
1.我们先进行手动扫码登录
2.利用f12开发者工具进行network分析,找到相应网址,进行获取cookie
代码及最终成果
import requests
from bs4 import BeautifulSoup
headers={
"user-agent":"chrome/10",
"cookie":"_iuqxldmzr_=32; _ntes_nnid=bf3adaf31b24a95bffaf0eff23cbd392,1622199417424; _ntes_nuid=bf3adaf31b24a95bffaf0eff23cbd392; NMTID=00OdtxhAEx6bf4clU7-rB7gxE-YqjIAAAF5sp69Kg; WEVNSM=1.0.0; WM_TID=yvPp1FB8p6lBUEBABAZqws8dh73kEliG; hb_MA-891C-BF35BECB05C1_source=www.baidu.com; P_INFO=qpsbyqq@163.com|1623933631|0|mail163|00&99|not_found&1623933627&mail_client#shd&370100#10#0#0|&0|mailmaster_android|qpsbyqq@163.com; WNMCID=zlnbli.1623933639197.01.0; hb_MA-9F44-2FC2BD04228F_source=netease.im; WM_NI=COkNUF0afxwkZCGOuBOdMFEiw2j0b1wQyrpFjej6BAbpdB91DWCaik%2B4riQA9TjbZea7n65nvW7%2BMYPQDRoqpjh7xHvEGXy3Cf2KQYABo62OH%2BhM2I6skaogDs06N5gfS3g%3D; WM_NIKE=9ca17ae2e6ffcda170e2e6eeaab2738696e5b4db4392e78fb2c45b939b9ebbb67288bdfad2cc3aadeaabb2eb2af0fea7c3b92a8191a5afd84ef4bfaa99f6619a9d89b0f84a8dbc83a7c863b5eea6d1e13bb58fb793f34eaabba6d7c14ba2b0aca3bc3b88898d82ec61e9ecbe8ad44bfb8ca683d96fa3e9a2d7b866b689f9ccd053948f8cb3ee7bb4b6a8d8fb44b69b89b9fc3981bafeacd453839ea1d7b1458cf5a8aeb143f6ada582ee6d88ad00d7cd3fa5ba9dd4e637e2a3; ntes_kaola_ad=1; playerid=51924929; MUSIC_U=10877c15d1ef03604b524c43deae62623271b233789184dc6e7a9cb0bce4afda33a649814e309366; __csrf=4f06cbba2e503a935047e428675c4fc5; JSESSIONID-WYYY=visoF3%2BwIOG8JsXgXEoSfVIz%2Boa%2FBW3OFSeJrXYY4cvm31P%2Fpahd1%5CcmsRFxVGjy%2FzhSkWKw8quzPjj8IkYiCW31M2u69xTyXAJ2mV9w3cD1MmiY0%2FB3yICbR%2B%5Cwiqvt2XcXlkGYkB6RuCZ%5CPf1ECb2AQpoSKa%2BzeE6vpq31JTY2lSwB%3A1624969901111referer: https://music.163.com/"
}
r=requests.get("https://music.163.com/playlist?id=2092096875",headers=headers,timeout=300)
print(r.status_code)
demo=r.text
soup=BeautifulSoup(demo,"html.parser")
ul=soup.find("ul","f-hide")
for item in ul.find_all("a"):
print(item.text)
(五)结语
关于学爬虫,更多考察你的分析能力,多敲代码,加油塑造自己!!