前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Python爬虫】初识爬虫(1)

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

作者头像
PM小王
发布2019-07-02 15:33:45
1.7K0
发布2019-07-02 15:33:45
举报
文章被收录于专栏:程序员小王程序员小王

写在前面

之前写了两篇关于爬虫的文章微信好友大揭秘赵雷到底在唱什么,纯粹是自己的兴趣引导自己学习爬虫,关注里应该有好多对爬虫感兴趣的小伙伴,为了巩固自己的爬虫知识,从今天开始更新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,

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-12-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小王 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 写在前面
    • 什么是爬虫?
      • 爬虫的基本流程
        • 字符串的区别和转化
          • Http和Https
            • URL的形式
              • Http请求格式
                • Request与Response
                  • 抓取的数据都是什么样的?
                    • 怎样解析数据
                      • 总结
                      相关产品与服务
                      云数据库 MySQL
                      腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档