python3爬虫之开篇
写在前面的话:
折腾爬虫也有一段时间了,从一开始的懵懵懂懂,到现在的有一定基础,对于这一路的跌跌撞撞,个人觉得应该留下一些文字性的东西,毕竟好记性不如烂笔头,而且毕竟这是吃饭的家伙,必须用心对待才可以,从今天起,我将会把关于爬虫的东西进行一个整理,以供后期的查阅,同时也想将自己的一点点经验分享给大家。
关于爬虫,在我们了解什么是爬虫之前,首先应该清楚为什么会需要爬虫。随着互联网的全球化,人们可以非常方便的通过网络来获取信息,但是,起初获取信息的方式就是人为的浏览、记录。但是当人们需要获取大量的信息时,人工方式就显得效率极其低下,这时,有些人就编写了一些程序放在互联网上运行,这些程序会按照人们编写的逻辑来快速的在互联网上采集信息,省事又省力,这种程序就叫做爬虫,也叫做蜘蛛(spider)。所以我们知道了,爬虫其实就是人为编写的一些程序,也也可以称之为脚本。
爬虫是从哪儿来分析采集数据呢?当然是从网页上,比如人来获取信息是输入了关键字来搜索,然后点击想要看的网页,或者直接输入某一个网址来获取某一个页面的,那么爬虫呢?爬虫是如何获取页面的呢? 说白了,爬虫也是通过技术手段来模拟人的操作来获取页面的过程。爬虫先是模拟人的操作来获取到目标页面,然后再对目标页面进行分析,从而采集到人们刚兴趣的信息。 主要原理如下图:

从上图我们了解到了爬虫的基本原理,但是请大家注意,上图中有两个过程我标红了,为什么呢?因为在整个爬取数据的过程中,这两个步骤是非常非常重要的,而且这也是爬虫与反爬相互博弈的地方。
从上图我们可以了解到,爬虫的运行,主要分为四个过程:
1. 获取目标url
2. 获取网页
3. 页面解析、提取信息
4. 数据持久化
不过对于我们来说,在编写爬虫之前,我们肯定已经知道了想要获取的网站地址,所以第一步我们基本上可以跳过。
下面的二、三、四步是非常重要的,但是最最重要的还是第二、三步。
关于第二步:获取网页,我们首先应该掌握两种Python标准库,一种是urllib,另一种是request,这两种库是帮助我们来获取目标网页的,当然还有一些其他的方法,这个我们以后会细细说来。
对于第三步:解析页面,我们需要掌握集中解析库:Xpath、css选择器‘、正则表达式、Beautiful Soup、pyquery。这些库可以帮助我们从html网页的各种标签中准确的获取到我们想要得到的数据。
关于第四步:数据的持久化,一般来说数据都会被放到数据库中,常见的数据库如mysql,oracle,MongoDB等等,当然,有时数据量过大也会有专门的文本服务器,图片服务器来存放数据。
好了,啰啰嗦嗦说了这么多,下一篇博客我就会直接从常用的请求库urllib来开始说起。
想了解更多Python关于爬虫、数据分析的内容,欢迎大家关注我的微信公众号:悟道Python
python3爬虫之开篇的更多相关文章
- Python3爬虫系列:理论+实验+爬取妹子图实战
Github: https://github.com/wangy8961/python3-concurrency-pics-02 ,欢迎star 爬虫系列: (1) 理论 Python3爬虫系列01 ...
- python3爬虫中文乱码之请求头‘Accept-Encoding’:br 的问题
当用python3做爬虫的时候,一些网站为了防爬虫会设置一些检查机制,这时我们就需要添加请求头,伪装成浏览器正常访问. header的内容在浏览器的开发者工具中便可看到,将这些信息添加到我们的爬虫代码 ...
- Python3 爬虫之 Scrapy 核心功能实现(二)
博客地址:http://www.moonxy.com 基于 Python 3.6.2 的 Scrapy 爬虫框架使用,Scrapy 的搭建过程请参照本人的另一篇博客:Python3 爬虫之 Scrap ...
- Python3 爬虫之 Scrapy 框架安装配置(一)
博客地址:http://www.moonxy.com 基于 Python 3.6.2 的 Scrapy 爬虫框架使用,Scrapy 的爬虫实现过程请参照本人的另一篇博客:Python3 爬虫之 Scr ...
- python3爬虫--反爬虫应对机制
python3爬虫--反爬虫应对机制 内容来源于: Python3网络爬虫开发实战: 网络爬虫教程(python2): 前言: 反爬虫更多是一种攻防战,针对网站的反爬虫处理来采取对应的应对机制,一般需 ...
- python3爬虫系列19之反爬随机 User-Agent 和 ip代理池的使用
站长资讯平台:python3爬虫系列19之随机User-Agent 和ip代理池的使用我们前面几篇讲了爬虫增速多进程,进程池的用法之类的,爬虫速度加快呢,也会带来一些坏事. 1. 前言比如随着我们爬虫 ...
- python3爬虫(4)各种网站视频下载方法
python3爬虫(4)各种网站视频下载方法原创H-KING 最后发布于2019-01-09 11:06:23 阅读数 13608 收藏展开理论上来讲只要是网上(浏览器)能看到图片,音频,视频,都能够 ...
- Python3爬虫:(一)爬取拉勾网公司列表
人生苦短,我用Python 爬取原因:了解一下Python工程师在北上广等大中城市的薪资水平与入职前要求. Python3基础知识 requests,pyquery,openpyxl库的使用 爬取前的 ...
- 笔趣看小说Python3爬虫抓取
笔趣看小说Python3爬虫抓取 获取HTML信息 解析HTML信息 整合代码 获取HTML信息 # -*- coding:UTF-8 -*- import requests if __name__ ...
随机推荐
- patch 修改有问题的
diff --git a/include/net/tcp.h b/include/net/tcp.h@@ -1013,8 +1048,13 @@ static inline u32 keepalive ...
- Python迭代器生成器,私有变量及列表字典集合推导式(二)
1 python自省机制 这个是python一大特性,自省就是面向对象的语言所写的程序在运行时,能知道对象的类型,换句话说就是在运行时能获取对象的类型,比如通过 type(),dir(),getatt ...
- sqlserver ceiling函数用法
ceiling函数返回大于或等于所给数字表达式的最小整数. floor函数返回小于或等于所给数字表达式的最大整数. eg: select ceiling(4.42) ---5select CEILIN ...
- #单元测试#以karma+mocha+chai 为测试框架的Vue webpack项目(二)
学习对vue组件进行单元测试,先参照官网编写组件和测试脚本. 1.简单的组件 组件无依赖,无props 对于无需导入任何依赖,也没有props的,直接编写测试案例即可. /src/testSrc/si ...
- poj 1753、2965枚举
1753题目链接 题目大意: 一个4乘4的棋盘,上面放满了正反两面分别为黑和白的棋子,翻转一个棋子会让这个棋子上下左右的棋子也翻转,给定一个初始状态,求使所有棋子颜色相同所需的最少翻转次数. 解题思路 ...
- ABAP正则表达式 vs SPLIT INTO
需求: 把如下通过"/"连接起来的三个字符串分别解析出来. 传统的做法见下图第98行的function module SKWF_UTIL_IO_FIND_BY_KEY: 这个fun ...
- Jmeter入门12 __time函数 jmeter获取当前系统时间
有的接口要传递当前的日期或时间,可以用__time()函数获取当前时间 ${__time()} 当前时间到计算机元年的毫秒数 ${__time(时间格式)} 以预定的格式显示当前时间 请求示例: ...
- pthread 的几个结构体
http://blog.csdn.net/yangzhongxuan/article/details/7397139 /* Copyright (C) 2002,2003,2004,2005,2006 ...
- oracle 基础知识(三)
一.删除oracle 进入注册表到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleOraHome91TNSListener Ima ...
- code First 三 Fluent API
Entity Framework Fluent API用于配置域类以覆盖约定. 在实体框架6中,DbModelBuilder类充当Fluent API,我们可以使用它来配置许多不同的东西.它提供了比数 ...