python爬虫(网易云)笔记
@(python学习)
- 先
推荐看一下b站的视频
链接如下:https://www.bilibili.com/video/BV12E411A7ZQ?from=search&seid=10419059379828214037 - 里面具体介绍了语法和pycharm编辑器的用法还有如何爬取豆瓣TOP250的过程(代码在后面),我自己再根据过程写了爬取网易云歌单,只是比原来的多了个循环爬取了歌曲,本来不必进入但是因为大网站他有反爬,所以得多写一层
- 最后爬取的结果如下:
基本流程
- 准备工作
- 查看页面整体html框架,分析标签
- 获取数据
- 写一个askurl函数获取整个页面内容,传入一个链接地址作为参数
一定注意:
网址除去/和#
不然会获取到没有有用信息的代码段并且会被反爬
(但其实去除符号之后得到了歌曲信息其他还是被加密了,自己分清楚哪些可以爬哪些不行,一定要根据自己代码爬出的页面去写后面的,而不是光看F12以后的页面元素)- urllib.Request生成请求 urllib.urlopen发送请求获取响应 read读取
注意头部信息处理
- 设置异常处理加入异常捕获try except语句
except urllib.error.URLError as e:
if hasattr(e, "code"):
print(e.code)
if hasattr(e, "reason"): # 什么原因导致没有打印成功
print(e.reason) #打印出来可能会有404,500等错误
- 逐一解析内容:利用
正则表达式和页面解析库bs
在getdata函数中由于img标签的正则表达式的错误导致产生了很多多余的不要的信息
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-seeHQiex-1595850838299)(./}7JHYL5O0$GDL692DCFTI8.png)]
-
保存数据:用xlwt保存到excel表格里
注意小点
- 一些库的说明
- bs4网页解析获取数据(爬完网页将数据进行拆分);
- re正则表达式进行文字匹配(进行数据的提炼);
- urllib.request,.error制定url获取网页数据(给网页就能爬);
- xlwt进行excel操作(存到excel)
- sqlite3进行SQLITE数据库操(存到数据库)
- 发起请求:
- urlopen方法可以实现最基本的请求的发起,但是如果要加入headers等信息,就可以用Request类来构造请求。此时要注意头部信息的空格的处理
- 从爬取歌单界面进入每一个歌单内部,发现歌单的链接和歌曲的链接只是后面id后缀的值不同可以用列表将其保存再利用列表进入链接内部
- 原本页面信息链接的符号多余或者一些http的省略要用拼串接上
例如获取歌单链接时:
data.append("https://music.163.com/"+link)
for i in range(0,70):
a=datalist[i][0]
a=a[0:22]+a[23:] #除去多余的/
baseurl2.append(a)
- 几个正则表达式设置为全局变量