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__ ...
随机推荐
- check_mk通用应用检测插件
客户端mk_tvmapp import json filename = '/tmp/tvmapp.json' print '<<<tvmapp>>>' for a ...
- 聚合不应出现在 UPDATE 语句的集合列表中
修改语句: update A set WZCount=ISNULL(WZCount,0)+(select SUM(WZCount) from T_PM_OutStock_SUB where Mater ...
- Orchard Core 使用工作流处理审批和创建内容项
译自:http://www.ideliverable.com/blog/orchard-core-workflows-walkthrough-content-approval 转载请注明出处, 原文地 ...
- MySQL:数据库入门篇3
1.sql语句逻辑执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_t ...
- 【[NOI2003]文本编辑器】
题目 发现这样一句话就会导致\(T\) ch[m][0]=++m; 并不是很知道为什么,可能这是某种未定义行为在不同编译器下会有不同后果? 至于这道题就很简单了,几个有关光标位置的操作就用一个变量模拟 ...
- 创建maven项目后缺少jar包下载失败等问题
transfer.......fail.........等问题 The container 'Maven Dependencies' references non existing library ' ...
- Docker 常用指令
1.检查内核版本,必须是3.10及以上uname ‐r2.安装dockeryum install docker3.输入y确认安装4.启动docker[root@localhost ~]# system ...
- Css 截取字符串长度
.shortNameShow{ overflow:hidden; text-overflow:ellipsis; -o-text-overflow:ellipsis; white-space:nowr ...
- 【luogu P4114 Qtree1】 题解
题目链接:https://www.luogu.org/problemnew/show/P4114 1.把边权转化到点权:选取连接这条边的两个点中较深的一个. 2.查询点到点之间的边权时,要从seg[x ...
- windows mklink
https://blog.csdn.net/kilosnow/article/details/7179705 创建目录链接E:\>mklink /d c:\b d:\a为 c:\b <&l ...