【Python爬虫】初识爬虫(1)

写在前面

之前写了两篇关于爬虫的文章微信好友大揭秘赵雷到底在唱什么,纯粹是自己的兴趣引导自己学习爬虫,关注里应该有好多对爬虫感兴趣的小伙伴,为了巩固自己的爬虫知识,从今天开始更新python爬虫这个基础教程,自己准备了挺长时间整理了自己的学习笔记,希望能给初学者带来一点帮助,在这个教程里我会给大家介绍爬虫常用的库跟大家做几个有意思的Demo。这篇文章主要是让大家了解爬虫和爬虫需要的基础知识,话不多说,我们开始吧。

什么是爬虫?

爬虫就是请求网站并提取数据的自动化程序,从技术层面来说就是通过程序模拟浏览器请求站点的行为,把站点返回的HTML代码/JSON数据/二进制数据(图片、视频) 爬到本地,进而提取自己需要的数据,存放起来使用。举个小栗子来加深印象,如果我们把互联网比作一张大的蜘蛛网,数据便是存放于蜘蛛网的各个节点,而爬虫就是一只小蜘蛛,沿着网络抓取自己的数据。

爬虫的基本流程

发起请求,通过使用HTTP库向目标站点发起请求,即发送一个Request,请求可以包含额外的headers等信息,并等待服务器响应。
获取响应内容如果服务器能正常响应,则会得到一个Response,Response的内容就是所要获取的页面内容,其中会包含:html,json,图片,视频等。
解析内容得到的内容可能是Html数据,可以使用正则表达式,第三方解析库如Beautifulsoup,pyquery等,要解析json数据可以使用json模块,二进制数据,可以保存或者进一步的处理。
保存数据保存的方式比较多元,可以存入数据库也可以使用文件的方式进行保存。
字符串的区别和转化
为什么要掌握python3字符串的相关知识?
在我们爬虫过程中url,响应内容,提取的数据都是字符串,因此我们需要去了解字符串的相关知识。大家都知道bytes是一个二进制,当然互联网的数据都是以二进制的方式传输的;str是unicode的呈现形式,后续的爬虫过程中少不了两者的相互转换,str使用encode方法转换成bytes,bytes通过decode转化为str,值的引起注意的是编码方式解码方式必须一样,否则就会出现乱码。
Http和Https

我们在爬虫过程中需要运用到Http的相关知识,在这里简单的给大家介绍Http和Https的相关概念。
HTTP是超文本传输协议,被用于在Web浏览器和网站服务器之间传递信息,HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,默认端口号:80。
为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS,为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密,默认端口号:443。

URL的形式
这是我们需要了解一个url的基本形式。
scheme:协议 例如http https ftp
host:服务器的ip地址或者域名
port:服务器的端口,协议的默认端口是80或者443
path:访问资源的路径
query-string :参数,发送给http服务器的数据,以?开头 &链接
anchor:锚 跳转到网页的指定锚点位置
可以对应的看一下百度网址:
https://www.baidu.com/baidu?wd=%E7%99%BE%E5%BA%A6&tn=monline_dg&ie=utf-8

Http请求格式
这里带大家简单的了解Http请求的格式:
Host:主机和端口号
Connection:连接类型
User-Agent:浏览器名称
Accept:传输文件类型
Accept-Encoding:文件编码格式
Cookie:cookie
X-Requested-With:Ajax异步请求

浏览器中可以查看具体请求头数据,以百度为例:
GET / HTTP/1.1 使用Get方法 Http协议
Host: www.baidu.com
Connection: keep-alive 表示长链接,想要复用上次的链接,目的提高响应时间
Accept: text/javascript, application/javascript, application/ecmascript, application/x-ecmascript, /; q=0.01 浏览器身份标识
X-Requested-With: XMLHttpRequest
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.80 Safari/537.36
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Cookie: BAIDUID=E67EB919B93326D6D11DE4F2688038F8:FG=1;
Request与Response
浏览器就发送消息给该网址所在的服务器,这个过程叫做HTTP Request。服务器收到浏览器发送的消息后,能够根据浏览器发送消息的内容,做相应处理,然后把消息回传给浏览器。这个过程叫做HTTP Response。浏览器收到服务器的Response信息后,会对信息进行相应处理,然后展示。
Resquest中主要包含请求方式,请求头,请求体和请求URL,Response中包含响应状态,响应头,响应体。

抓取的数据都是什么样的?

我们爬取来的数据一般都是网页文本(HTML文档、Json格式文本),图片或者视频(获取到的是二进制文件,相应的保存为图片或者视频格式)。

怎样解析数据

在将我们抓取到的数据进行解析的时候需要用到下面的方法:直接处理,json解析,正则表达式,BeautifulSoup,PyQuery,XPath。

总结

1、爬虫流程:
请求--->获取响应--->解析--->存储
2、爬虫所需工具:
请求库:requests,selenium(可以驱动浏览器解析渲染CSS和JS,但有性能劣势(有用没用的网页都会加载)
解析库:正则,beautifulsoup,pyquery
存储库:文件,MySQL,Mongodb,
【推荐阅读】

【LeetCode】汇总贴(NO.1-20)

机器学习实战--住房月租金预测(1)

用Python来一场人工造雪

Python人工造雪2.0(动态版)

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 210,914评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 89,935评论 2 383
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,531评论 0 345
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,309评论 1 282
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,381评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,730评论 1 289
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,882评论 3 404
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,643评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,095评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,448评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,566评论 1 339
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,253评论 4 328
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,829评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,715评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,945评论 1 264
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,248评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,440评论 2 348

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,626评论 18 139
  • 国家电网公司企业标准(Q/GDW)- 面向对象的用电信息数据交换协议 - 报批稿:20170802 前言: 排版 ...
    庭说阅读 10,913评论 6 13
  • 爬虫概述 1. 目录清单 爬虫简介 通用爬虫和聚焦爬虫 网络请求那些事儿 网络数据抓包分析 2. 章节内容 2.1...
    小皇帝s阅读 685评论 0 1
  • Spring Web MVC Spring Web MVC 是包含在 Spring 框架中的 Web 框架,建立于...
    Hsinwong阅读 22,350评论 1 92
  • HTTP基本原理 URI、URL、URN(Uninform Resource) URI(Identifier):统...
    GHope阅读 2,068评论 2 26