后台有很多粉丝希望分享一些关于爬虫的知识,因为不管是做数据分析还是数据挖掘,其核心都是数据,实际生产活动中,很大一部分数据是来源于爬虫。
今天我们先来学习一下爬虫入门基础:requests和BeautifulSoup。这两大利器构成了我们爬虫的主要要素,很多深入的应用都是在这些基础之上的,下面我们就结合一个真实案例来进行学习。
今天我们要爬取的是新浪爱问共享资料,这个网站上有很多免费的文档,尤其是中小学生学习资料,是个不错的来源。
首先搜索我们需要的文档,比如:我想要关于初三物理的文档,搜索结果如下:
我们可以看到,每页有30个文档,并且总共有20页,这么多作业肯定狗亲戚家小朋友做的了。
那么,我们现在就来构思我们的爬虫,首先,我们要获取每篇文档的链接,接着再进入文档,爬取详细的内容,先来查看一下网页结构:
可以看到,30个文档模块整整齐齐的摆放在我们面前。那么首先就要来解析这个搜索目录了,先来看代码:
我们用到了requests这个库,这个库主要是用来请求url,并且获取这个url中的内容:
我分别打印了r和r.text,第一个返回的是200,表示网页请求成果,之后的是网页的详细信息。拿到网页之后该怎么办呢,下一步就是解析网页的内容,并且获取我们想要的信息,r.text返回的是一个文本,计算机并不认识,所以我们需要先把它整理成结构化的网页文档,这里就需要BeautifulSoup这个包了,老规矩先看代码:
首先把request返回的值使用html.parer进行解析,其次通过查找我们发现,所有的链接都存在于a标签当中,并且这些标签的class属性都是sts_8,所以我们就拿到了结果:
所有的结果都拿到了,但是这并不是我们的最终结果,我们想要的仅仅是href属性的值,我们发现,所有的结果都保存在一个列表当中,所以我们还有一个办法:
通过遍历列表的中的值,获取每个值的href属性,看下结果:
这正是我们想要的文章链接,所以拿到这些链接之后,我们就可以顺理成章的去获取具体文档内容了,剩下的交给大家自己练习了!按照这个思路,我们几乎可以爬取新浪所有文档,赶紧试试吧。