「机器学习集训营第一期」第二周周总结


看了几位同学的周总结,写的都很用心,备受鼓舞,这里也把自己的一点学习体会写下来,一来是记录一下自己一周以来的学习成果供日后回顾,而是给对集训营还不了解的同学介绍一下这里的情况,算给七月在线打一个小的广告。

本周一、三、五三天为线上课程,周日为线下课程,内容相比上周相当充实。

第一次课,老师介绍了爬虫的基本知识:request模块获取页面请求与beautiful soup模块抓取页面元素。具体方法为,通过request模块与目的url发送页面get请求,拿到html文件然后通过css selector对其进行解析。基本上大部分新闻网站、电商的静态网页数据都可以同过此种方式拿到数据。第一天结束后试着爬下来了所有的城市当天的火车车次数据,收获颇丰。

第二次课,老师从如何提高爬虫效率、如何获取动态页面信息、模拟登陆、反射机制的角度对爬虫体系做了进一步的介绍,具体如下:
1.提高爬虫效率:讲解了多进程、多线程、异步的机制,介绍了如何通过grequest模块发送异步请求
2. 有些页面数据通过javascript动态获取的,因此需要通过selenium模块与chromedriver模拟浏览器操作,如滚动下拉框、点击按钮,往输入框写入数据等。
3. 模拟登陆:有些数据需要登陆后才能拿到,老师介绍了两种模拟登陆的方式,其一是通过requests模块发送post请求,然后将session保留下来模拟登陆后的会话,其二是每次发送request时都带上登陆后的cookies,个人认为后一种方法实现上比较便捷与通用。
4. reflect反射机制,也是提高爬虫效率,当要爬取得url比较多时,可以通过他们的root地址进行任务分发,到不同的爬虫模块去完成。

第三次课,老师主要从框架上面,介绍了如何搭建一个分布式爬虫项目。这里用到了redis和Mysql数据库。redis的作用用的比较多的是cache和queue,这里主要用到它的queue进行任务分发。分布式爬虫包括的具体模块如下:
1.基于peewee封装的ORM,用来与Mysql数据库交互更友好
2. redis queue,爬虫任务队列
3. scheduler,往爬虫队列里面存放任务
4. worker,从爬虫队列里面取任务

第四次线下课,老师带大家做了几个练习,分别是模拟登陆豆瓣获取电影短评以及利用selenium动态获取qunar机票价格数据。并介绍了他经常用的lxml模块,相比较beautiful soup,lxml效率更快,且支持xpath等元素查找功能。最后老师介绍了scrapy爬虫架构,感觉跟老师第二次科讲的反射机制有点像,只是scrapy更容易操作些。

如上便是本周爬虫课所学,自己成长很多,下周继续加油!
已邀请:

要回复问题请先登录注册