爬虫教程」Python做一个简单爬虫,小白也能看懂的教程
俗话说“巧妇难为无米之炊”,除了传统的数据源,如历史年鉴,实验数据等,很难有更为简便快捷的方式获得数据,在目前互联网的飞速发展写,大量的数据可以通过网页直接采集,“网络爬虫”应运而生,本篇将会讲解简单的网络爬虫编写方法。
开发环境
每个人的开发环境各异,下面上是我的开发环境,对于必须的工具,我会加粗。
windows10(操作系统),pycharm(IDE,当然,用eclipse和sublime均可),python(这个必须的额,我下面实现的代码版本是2.7),BeautifulSoup4、urllib2等。
什么是爬虫
爬虫是自动从互联网上获取数据的程序。
下面是一张对简单爬虫的结构进行描述的图,其主体是URL管理器,网页下载器和网页解析器。爬虫调度端指的是对爬虫发布指令的端口,人可以对其进行设置,爬什么内容,怎么爬,需要进行什么其他的操作等,通过爬虫,就能够得到所需的有价值的数据。
下面一张时序图图简单讲述了爬虫的运行流程。从上往下看,调度器访问URL管理器查看其中由于可访问的待爬取的URL,如果返回是即将1个待爬的URL传给调取器,调度器让下载器将URL对应的网页下载下来,返回给调度器,调度器将下载的网页发给解析器进行解析,解析之后返回到调度器,此时数据已经初步形成,可以开始进一步的使用。如此循环直到URL管理器为空或者数据量足够大。
URL管理器
URL管理器:管理待抓取的URL集合和已抓取URL集合。主要实现下面种功能。
添加新URL到待爬集合中。
判断待添加URL是否在容器中。
获取待爬取URL。
判断是否还有待爬取URL。
将待爬取URL移动到已爬取。
实现方式:
内存:python的set集合
关系数据库,MySQL,urls(url, is_crawled)
缓存数据库:redis的set集合
网页下载器
网页下载器:将互联网上URL对应网页下载到本地的工具。
我刚整理了一套2018最新的0基础入门和进阶教程,无私分享,加Python学习q u n :227-435-450即可获取,内附:开发工具和安装包,以及系统学习路线图python的
网页下载器
urllib2-python-官方基础模块
requests-第三方更强大
urllab2下载器使用方法:
最简捷方法:直接写出链接并且请求。
添加data、http helper,data和httphelper能分别为下载提供更加精确的目标,同时可以模仿浏览器对网页进行访问,能攻破一些反爬虫策略。
添加特殊情景处理器,例如账号密码输入等,有些网站只有在用户登录时才能浏览,而情景处理器就能模拟这形式。
运行实例:
网页解析器
网页解析器:从网页中提取有价值数据的工具,侧面而言,也能看做是整合数据的一个步骤,但是由于爬取数据复杂度较高,所以不会将太多的数据整合、集成、清洗任务放在这里,只是进行简单的整合,成为数组或者矩阵等而已。
Beautiful Soup
python第三方库,用于从HTML或者XML中提取数据,有自己的官网,同时还有API文档。
其下载方式可在API文档中找到。
用法介绍如下图所示。BeautifulSoup对象创建之后能够去搜索节点,根据节点名、属性值或者是节点文字等信息进行查询,能够达到精确搜索的目的,减少垃圾数据获取。
举一个例子,对一个标签:
能有三种方式搜索
节点名称:a
节点属性:"href='123.html',和class=article_link"
节点内容:python
语法使用如下:
下面是具体的案例:

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《Java8实战》-第十二章笔记(新的日期和时间API)
新的日期和时间API Java的API提供了很多有用的组件,能帮助你构建复杂的应用。不过,Java API也不总是完美的。我们相信大多数有经验的程序员都会赞同Java 8之前的库对日期和时间的支持就非常不理想。然而,你也不用太担心:Java 8中引入全新的日期和时间API就是要解决这一问题。 在Java 1.0中,对日期和时间的支持只能依赖java.util.Date类。正如类名所表达的,这个类无法表示日期,只能以毫秒的精度表示时间。更糟糕的是它的易用性,由于某些原因未知的设计决策,这个类的易用性被深深地损害了,比如:年份的起始选择是1900年,月份的起始从0开始。这意味着,如果你想要用Date表示Java 8的发布日期,即2014年3月18日,需要创建下面这样的Date实例: Date date = new Date(114, 2, 18); 它的打印输出效果为: Tue Mar 18 00:00:00 CST 2014 看起来不那么直观,不是吗?此外,甚至Date类的toString方法返回的字符串也容易误导人。 随着Java 1.0退出历史舞台,Date类的种种问题和限制几乎一扫...
- 下一篇
整理位运算
参考链接(总结的非常好,各种奇淫技巧):https://blog.csdn.net/MoreWindows/article/details/7354571 1、优先级 “<<” 和 ">>" 的优先级低于 “+” 和 “-”。 “~” 按位求反 “^”按位异或 “|”按位求或 “&”按位求与 2、基本概念 注意以下几点: 1.在这6种操作符,只有~取反是单目操作符,其它5种都是双目操作符。 2.位操作只能用于整形数据,对float和double类型进行位操作会被编译器报错。 3.15=0000 1111(二进制),右移二位,最高位由符号位填充将得到0000 0011即3。 -15 = 1111 0001(二进制),右移二位,最高位由符号位填充将得到1111 1100即-4。 https://blog.csdn.net/studyvcmfc/article/details/7606292 https://jingyan.baidu.com/article/29697b9106eb52ab21de3c7a.html ——————————...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Hadoop3单机部署,实现最简伪集群
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6