如果你不是科班出身,没有开发经验,初次接触开发爬虫这档子事儿,相信这篇文章能帮到你。
python开发爬虫肯定是有门槛的。尽管python很简单,上手不难,但是开发起来你会发现,开发爬虫不只是单单会python就可以了,你还得需要下列这些技能。
01用python开发爬虫你需要拥有前端知识
爬虫是什么?爬虫其实是一个抓取互联网信息的一个功能or一个软件。爬虫的工作原理很简单,你给它一个地址,它自己就会按照你编写好的逻辑,一步一步获取你想要的网页或者app的特定信息。
为什么是特定信息,其实我们开发爬虫主要做的事情就是获取特定信息的,你全部一股脑的都收集起来也没什么意义。
怎么样获取特定信息,这就需要你了解前端,知道怎么分析html结构,会用F12打开浏览器调试工具,找到你要的内容。比如
怎么拿到第一条推荐的新闻,按照刚才说的需要知道这条新闻在首页里面的html结构
我们F12打开浏览器开发者工作,我用的是chrome
鼠标先点击一下开发者工具里面的左边的箭头,然后在点击一下页面上的你要获取的新闻标题,这时候开发者工具就帮我们定位到你要获取的新闻标题位置了,接着你在开发者工具里面找到定位的位置,鼠标右键
然后选择copy->copy selector 这就是拷贝当前位置的选择器,也就是类似css的选择器,粘贴出来是这样的 #js_top_news > h2:nth-child(1) > a
想了解这句选择器是什么意思的,可以去学习一下css选择器,这是最快的一种查找方式。如果你css比较好,你可以自己手写出来更加直接的选择器。目的都一样就是要定位到我们所要信息的精确位置。
02要有分析目标页面的能力
这一点儿是最重要,为什么这样说呢,因为刚才上面你们看到的只是最简单的一种寻找目标源的方法。现在很多网站都有防爬虫技术。碰到这种情况,用我们上面介绍的方法是没有办法找到真正的路径。比如抓取云音乐想找到详细的路径列表是很困难的如:
这首音乐如果你想抓下来直接F12查看html结构是获取不到真实的音乐路径的,因为网易云音乐做了反扒处理,用js拼出了真实的地址。
所以这个时候得耐心地去分析页面资源,用我们刚才说的浏览器开发工具,或者借助第三方抓包工具如fiddler,去分析页面真正的请求路径和请求参数。这里还用浏览器自带的开发工具去找这首音乐的真实地址,如图
我们可以通过network标签页面去找真实的请求地址,按照图上的1、2、3、4步骤去找一下你会发现这首《相思》的真实路径是这样的
这是一个动态路径,所谓动态路径这个地址其实是有时效性的,就是短时间内可以请求下载,过了时间地址失效想下载需要重新找到新的地址。
有的朋友会问,如果我想批量的下载网易云音乐该怎么办?一个地址一个地址这样的去找,然后自己用excel收集地址最后批量去下载。如果你真这样干了,最后你会发现最终下载不下来,主要原因就是这些地址都是动态拼接的有时间限制看到路径第二个文件夹了吗是个时间戳20200404220828,这就是过期时间,一个地址的有效期大概是25分钟。
你会发现爬虫与反爬虫是一场永无休止的战争,没有抓不下来的数据,只有不会分析页面的开发人。
爬虫的重点不是抓而是在怎么分析页面结构得到真实的目标地址。所以说学习爬虫的重点应该放在分析页面上。分析页面寻找真实url不是一件容易事儿,这个门槛还算是蛮高的。
找到真正的地址后,用大概五行的代码就下载下来了。