如果文中术语表述有误的请指正
还有很多的错误需要改正
希望各位指出错误
在下不吝赐教
看了一些网上的一些免费爬虫教程,我个人觉得有些就写的不痛不痒的,大致就是先教一下Python或Java的基础,然后介绍下可以用的爬虫模块,然后就做一个很简单的案例,然后教程就结束了。
看完了之后吧觉得很ok(当初我也是),也开始爬了一些很简单的网站,刚开始很有成就感,但是遇到反爬虫机制比较强的网站就根本无从下手,也会很失落。
当初我爬知网的时候也是花了很多时间也没能成功爬出来,后来就放弃了,直到期末到自己要做一项作业需要知网数据的时候才又重新看知网的机制。
这篇主要是我的个人记录,给大家提供一些写爬虫的时候的一些思路或方法,之后会搭配了两个案例来运用一下这些思路。当然思路或方法只是一个参考,更多的需要自己更深层次的理解和总结。
当然
这一篇有一个基础假设,即
你拥有Python或者Java的编程基础,以及有爬虫的基础。
1学会分析爬下来的源代码
(学会这个方法可以省去五分之一的时间)
(我瞎说的)
有些人会比较懒(比如我),经常不自己写xpath语句而是直接用浏览器对目标网站copy xpath,这种情况就会出现一些问题,比如“我xpath是对的但是为啥拿不到数据啊”。
像这种情况,根据我的经验,有一种可能是网站的内容通过js添加进去的,比如新浪微博;还有一种可能是因为页面没渲染出来(我瞎扯的)。从而导致你的爬虫爬到的内容和你在浏览器上看到的内容不一样,所以xpath就用不了。
预览爬下来代码的页面
面对这种情况,我的建议是刚开始的时候对你的爬虫不做任何的xpath选择,只是单纯的把网页源代码全部抓取下来,然后在这个的基础上分析你想要的范围。
浏览器是浏览器,爬虫是爬虫,浏览器看的到的,爬虫不一定能看的到。
2学会抓包 ― ―重点
(学会这个方法可以把所有网站爬下来)
(我还是瞎说的)
很多浏览器都支持这个功能,我推荐拥有谷歌内核的浏览器,比如谷歌浏览器、QQ浏览器之类的。在目标网站的审查元素里选择Netword,然后刷新。
用QQ浏览器抓包的页面
这个有啥用呢,比如说你要爬取某个学校发表的所有论文。正常人工操作就是选择检索范围和输入检索词,然后点击检索按钮,那这一操作怎么让你的爬虫来做呢。
选择抓包到的数据
人工操作之后就可以看到这一过程中有哪些数据被发送哪些数据被接收。我们选择画红框的那个看一下。
数据里的请求及参数
哇,是一个POST请求,也就是当我们在点击检索的时候就是发送了一个POST请求,然后返回给我们数据结果,所以对于爬虫我们就可以给它增加一个模拟POST请求,输入请求参数,就可以完成这个操作。这一步最重要是要明白这些请求参数是什么意思。
看不懂Request URL的同学,出门左转百度:URL参数
网站需要登录操作的话也是类似的,可以模拟一个POST请求,比如说方正的教务系统等等。
这只是一个简单的例子,我个人觉得很多时候可以优先抓包进行看一下有拿一些数据可以获取。像时光网的评论的点赞数就需要通过抓包获取。最关键的是要学会这一项对于爬虫来说是非常重要的技能。
这两点就是我个人在写爬虫的时候最常用到的,基本就是一抓一个准,写爬虫这种东西就是需要剑走偏锋,学会换一种思路去研究它,思路是说不完的,只有自己多尝试,多思考,遇到问题问人不如问百度。
下一篇推送是用两个案例说明在写这两个爬虫时候我是如何去发现的数据,希望能让大家对写爬虫时有新的思路。
领取专属 10元无门槛券
私享最新 技术干货