爬虫又是另外一个领域,涉及的知识点比较多,不仅要熟悉web开发,有时候还涉及机器学习等知识,不过在python里一切变的简单,有许多第三方库来帮助我们实现。使用python编写爬虫首先要选择合适的抓取模块,简单的功能就是能发送和处理请求
课程大纲
标签属性、常用标签详解、颜色设置详解、相对路径和路径。
表格标准结构、表格样式详解、合并方、合并列。
表单空间详解、文本框、密码框、文本域、隐藏域、上传空间、单选和复选框、下拉列表、按钮、重置、提交等控件。
HTML5新增标签、新增控件
CSS概述、行内式、标签式、导入式、标签选择器、类别选择器、ID选择器、交集选择法、并集选择法、子代选择法、常用属性详解
CSS盒子模型、CSS定位、static定位、relative定位、absolute定位、fixed定位
圆角、阴影、渐变、CSS图标、CSS3新增属性、CSS3新增选择器、CSS3新增选择法
Javascript概述、Javascript基础语法、注释、输出、对话框、变量使用、类型转换、运算符。
选择结构-if-else、选择结构switch。
循环结构-for、break和continue的使用,嵌套循环结构
数组的概念、数组的使用、循环数组、遍历数组。
数组的聚合算法、数组的倒置算法、数组的查询算法、数组的排序算法。
函数的概念、函数的定义、函数的调用、函数递归。
面向对象思想、创建对象、闭包原理及使用场景。
内置对象和常用方法、Javascript事件概述、常用事件详解、表单输入校验课堂案例。
DOM效果课堂案例、计时器使用。
正则表达式概念、正则表达式使用场景、正则表达式使用详解、PropType扩展函数详解。
Json数据和Json对象、JQuery常用内容详解。
JQuery监听事件详解、Jquery动画详解。
JQuery常用效果课堂案例制作、JQuery插件制作。
Bootstrap概述、响应式控件、响应式组件、响应式布局。
python 自带的urlib2和urlib或者第三方模块requests
这种方案适合简单的页面爬虫,比如爬取博客园推荐文章。
urllib2和urllib是python自带模块可用来发送处理请求,虽然比较灵活但API易用性较差,所以一般都要进行二次封装,我曾经也进行过封装,发现自己封装出来的模块无限趋近于非常成熟的requests库,所以还是直接使用requests吧,当然requests只发送和接受请求,对于页面分析还要配合lxml或beautifulsoup等第三方库进行。高级点的爬虫不仅仅是发送和处理请求,还需要处理异常,请求速度控制等问题,这就需要我们写额外的代码去控制,当然我们可以自己写只是时间问题,但完全没有必要,接下来我会介绍第二种方案。
二、scrapy框架
scrapy是爬虫领取的佼佼者,目前我做的项目无论复杂与否,都采用scrapy进行,对于请求调度,异常处理都已经封装好了,而且有第三方的scrapy-redis还可以支持分布式,我们把关注点放在更重要的页面分析和规则编写上,代码可以参考我github上的例子。
三、python selenium
这种方式我称为必杀器,一般是实在没办法的时候才用,以前我在利用某家搜索引擎抓取文章时,该搜索引擎采用的比较高难度的反爬虫机制而且不断变化让人找不到规律,典型的特点就是cookie会随机隐藏到某个页面js和图片中,解决方案就是模拟浏览器的行为加载所有js等静态资源文件,如果自己写个浏览器取解析太扯蛋了,如果chrome浏览器能开放接口,通过chrome的加载方式获取页面的内容就好了,这就是selenium了,selenium加上随机等待时间可以模拟出和人非常类似的操作行为,缺点就是速度较慢,但是一般爬虫对抓取速度要求不高,重要的是稳定性,这种方式对于抓取反爬虫机制做的好的大型网站比较适用。
总结,对于大部分爬虫需求直接用scrapy解决,如果解决不了再采用种或第三种方案,就这么简单。