前言
这是学习爬虫文章的最后一篇,但不代表爬虫的知识就大概学习完了,只能说有基本的爬虫常识,严格意义爬虫技术本就不是简单的玩意,它关系到了计算机网络、编程基础、前端开发、后端开发、App 开发与逆向、网络安全、数据库、运维、机器学习、数据分析等各个方向的内容,它像一张大网一样把现在一些主流的技术栈都连接在了一起。
这个章节我们来做个简单的实例,再好好的总结我们现在掌握的简单爬虫技术再实际应用中到底会面临什么问题?
在酷狗音乐网页版下爬取eason的歌曲名和专辑
我们大体的思路就是首先直接在网页版搜索“陈奕迅”,发现是动态网页,所以我们用selenium库进行解析,获取真正的源码,接着使用BeautifulSoup进行爬取演唱歌手、歌曲名和歌曲所属专辑三部分。
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.kugou.com/yy/html/search.html#searchType=song&searchKeyWord=%E9%99%88%E5%A5%95%E8%BF%85') #网址是人工点击搜索陈奕迅的,当然,如果你想用编码的方式打开也可以的
driver.page_source #查看网页真正的源码
html = driver.page_source #获取新窗口源代码
#下面就是类于爬取静态网页
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, 'lxml')
song_name = [i.text for i in soup.select('#list_content1594887171375 > li > div.width_f_li.clearfix > a')] #路径为selector路劲
song_name
albums = [i.text for i in soup.select('#list_content1594887171375 > li > div.width_s_li > a')] #专辑名称
names = []
artists = []
# 分开歌手和歌名
for i in song_name:
name,artist=i.split('-')
names.append(name)
artists.append(artist)
names
import pandas as pd
pd.DataFrame({'歌曲': names, '歌手': artists, '专辑': albums}) #做成dataframe展示
部分dataframe:
大总结:
我们这些爬虫都算是雕虫小计,而且还并没有爬取到感觉会很有帮助的东西对吧。所以我们就简单谈谈我们实际爬虫的会面临的问题:
第一,验证码的问题,在我们之前的学习中,我们只处理了一种验证码的形式,这种验证码是最简单的,如果面临着点击文字验证、滑动验证,那我们暂时也是束手无策。
第二,动态网站问题,现在很多网站都会去识别 webdriver,看到你是用的 Selenium 等工具,直接干掉或不返回数据,所以碰到这种网站还得来专门解一下这个问题。
这是可能我们个人爬虫遇到的一些问题,但是如果要成为爬虫工程师面临的问题就更多了。
到这里,我想现在所学习到的简单爬虫应该是暂时够我用了,所以网络爬虫学习也就暂告一段落了,在这个学习过程中,如果表述有误或者知识点错误也欢迎大家指出批正!