文档章节

爬虫教程」Python做一个简单爬虫,小白也能看懂的教程

糖宝lsh
 糖宝lsh
发布于 11/18 10:20
字数 1162
阅读 43
收藏 5

俗话说“巧妇难为无米之炊”,除了传统的数据源,如历史年鉴,实验数据等,很难有更为简便快捷的方式获得数据,在目前互联网的飞速发展写,大量的数据可以通过网页直接采集,“网络爬虫”应运而生,本篇将会讲解简单的网络爬虫编写方法。

 

开发环境

每个人的开发环境各异,下面上是我的开发环境,对于必须的工具,我会加粗。

windows10(操作系统),pycharm(IDE,当然,用eclipse和sublime均可)python(这个必须的额,我下面实现的代码版本是2.7),BeautifulSoup4urllib2等。

什么是爬虫

爬虫是自动从互联网上获取数据的程序

下面是一张对简单爬虫的结构进行描述的图,其主体是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

语法使用如下:

下面是具体的案例:

© 著作权归作者所有

共有 人打赏支持
糖宝lsh
粉丝 27
博文 143
码字总数 243636
作品 0
临沂
私信 提问
5个python爬虫教材,让小白也有爬虫可写,含视频教程!

认识爬虫   网络爬虫,如果互联网是一张蜘蛛网,网络爬虫既是一个在此网上爬行的蜘蛛,爬了多少路程即获取到多少数据。 python写爬虫的优势   其实以上功能很多语言和工具都能做,但是用...

柯西带你学编程
06/12
0
0
月薪5千加班到凌晨,月薪5万5点下班,差别究竟在哪里?

说起程序员人们的第一印象就是工资高、加班凶、话少钱多头发少。再加上现在科技互联网公司太吃香,BAT、华为和小米等公司程序员加班情况被广泛传播,程序员用生命在敲代码的印象刻在了很多人...

技术小能手
09/18
0
0
关于Python面试的四点,你做到就万事大吉了!

第一点:Python 因为面试的是Python爬虫岗位,面试官大多数会考察面试者的基础的Python知识,包括但不限于: Python2.x与Python3.x的区别 Python的装饰器 Python的异步 Python的一些常用内置...

糖宝lsh
09/29
0
0
Python到底能干嘛?

学了点php,我学会了点点做网站的,该网站程序的办法。 但是我学了python之后我还是不知到这个能干嘛?网上实例教程太少了,有没有人能不能帮我举几个例子?用python办到的列子。别和我说豆瓣...

linuxin
2015/10/26
3.8K
21
她们不一样!python小白刚学会python竟然爬取了网上所有小姐姐的照片

如今想学python的人越来越多,无论是专业的程序员还是业余爱好者,都对python情有独钟。世界上值得学习的技能有很多,但是如果你要问我推荐哪一个,那么我会推荐一门编程语言,比如python。如...

Python学习
06/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CDH安装SENTRY

1. 背景 虽然在集群上部署了kerberos认证,但是kerberos只是对用户层面进行认证,凡是认证通过的用户都有全量的访问权限,这很不安全,需要进一步对用户的权限进行控制,Sentry 的作用就是这...

hblt-j
16分钟前
1
0
Ubuntu 18.04 PostgreSQL 11 apt 默认安装某些问题解析

首先默认安装软件(本文以PostgreSQL 11.1为例,其他版本类似)。 sudo apt install postgresql-11 等待软件自动安装并完成配置,启动服务。 服务状态如下: vmware@vmware-virtual-machine:...

白豆腐徐长卿
16分钟前
1
0
一步步动手实现高并发的Reactor模型 —— Kafka底层如何充分利用多线程优势去处理网络I/O与业务分发

一、从《Apeche Kafka源码剖析》上搬来的概念和图 Kafka网络采用的是Reactor模式,是一种基于事件驱动的模式。熟悉Java编程的读者应该了解Java NIO提供了Reactor模式的API。常见的单线程Jav...

Anur
20分钟前
1
0
数字信号处理各种处理及图象

https://wenku.baidu.com/view/b1bb67f1f90f76c661371a75.html?sxts=1544696459935

whoisliang
23分钟前
1
0
rabbitmq学习

使用docker安装rabbit docker run -d --hostname my-rabbit --name rabbit -p 8080:15672 rabbitmq:management--hostname:指定容器主机名称--name:指定容器名称-p:将mq端口号映射到本地...

元谷
38分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部