Python爬虫日记(一)

前言:本人从今天开始学习网络爬虫,想以写博客的方式来记录自己的学习,若有不足之处,欢迎大家指正。

什么是爬虫?

有关于网络爬虫的定义相信网上有很多,在我看来,网络爬虫就是自动的在网络上,按照一定的规则,在万维网上抓取图片、网页,脚本信息等任何你想要抓取的东西。Python语言的简洁和可以任意使用多种第三方库的特性让我决定学习python网络爬虫

想写爬虫首先得知道的

  • URL:例如"https://www.baidu.com"这样的就是一个URL,其中包括了访问协议“https”和访问路径。有些URL还有特定的资源名称,例如"https://github.com/favicon.ico"中的”favicon.ico“就是一个资源名称,其实URL是包含在URI中,但URi中的另一个URN我们平时用的不多,就没有去过多了解,所以,一般的网页链接我们都用URL来表示。
  • 超文本:我们平时在浏览器中看到的网页就是超文本解析而成的。例如下面的图片中,我以优快云的首页为例,在打开网页后,按下F12即可打开浏览器的开发者工具,在其中选择ELements,此时我们就可以看到当前网页的源码,这些源代码就是超文本。
    在这里插入图片描述
  • HTTP和HTTPS:我们一般在网站的URL开头可以看到http或者https,这就是访问网页的协议类型。在爬虫中,我们一般爬取的网页都是http或https协议。HTTP叫做超文本传输协议,它能保证高效而准确的传输超文本文档;HTTPS则是比HTTP更安全的传输通道,一般这种网站都有第三方发放的证书来保证其安全性,通过https传输的内容都是经过SSL加密的。
  • HTTP请求过程:一般情况下,我们在自个的浏览器中输入一个URL,此时,浏览器会想你所输入的URL所在的服务器发送请求,等服务器接收到请求后进行处理和解析,然后返回对应的信息,这里的信息包括了网页的源码等,这时浏览器再将这些信息下载到本地,呈现在屏幕上。
  • 请求方法(get与post):当我们在浏览器中输入一个URL时,就发起了一个get请求,请求时参数会直接包含到URL中。但是,这种get请求通常是不安全的,例如在需要登录才能访问的网页中,如果还是使用get请求的话,用户的名称和密码会直接显示在URL中,这非常容易被他人所盗取。所以,在进行类似于需要登录表单提交访问的页面时,会自动的发起POST请求,这时,你的登录信息会放在一个表单里面进行提交。除了安全问题外,get请求能够提交的数据只有1024字节,而POST没有限制。
  • 响应:我们在访问网页时,有时会遇到”错误404“等信息,这就是服务器对我们的响应状态,例如200是成功访问、400是错误请求等。这里就不一一放出来了。
  • 响应头:在浏览器的开发者工具中,我们可以看到一系列的参数,这些就是服务器的应答信息。例如:
    • Date:响应产生的时间
    • Content-encoding:指定响应内容的编码
    • Cookie:一般的访问信息都放在cookie中,以便于在下次访问服务器时直接提交cookie里的内容就可以看到上次的网页内容。
      在这里插入图片描述
  • 网页基础:我们通常访问的网站都是由HTML,CSS,JavaS组合而成的,如果将一个网页比作一个身体的话,那么HTML就是这个身体的骨架,JavaS相当于肌肉,CSS相当于皮肤,这三者进行结合之后才能形成一个完善的网页。这里只做些简单的介绍:
    • HTML是超文本标记语言,不同类型的元素通过不同的标签来表示,各种标签又进行不同的排列和嵌套才形成的网页。但是,单纯的只用HTML写出的网页太过于单一以及布局的不美观,这时就要借助CSS了。
    • CSS又叫做层叠样式表,层叠指的是即使在HTML引用了多个样式文件,并且样式发生冲突,浏览器依然能够依照层叠顺序处理,样式指的是网页中文字的大小、形状、间距等。用了CSS的网页会变得更加美观。
    • JavaScript,简称JS,我们在网页中看到的进度条的加载,交互式的动画效果都是JS的功劳。

爬虫的基本原理

  • 1.获取网页
    • 这里的获取网页指的是获取网页的源代码,源代码里面包含了网页的部分有用信息,所以首先要把源代码获取下来,才能够从里面提取想要的信息。
  • 2.提取信息
    • 在获取网页的源代码后,接下来就是分析网页源代码,从中提取出我们想要的信息。由于网页的结构有一定的规则,所以可以使用一些库来根据网页的节点属性提取网页信息,例如:Beautiful Soup、pyquery、lxml等。提取信息可以使杂乱的数据变得条例清晰,更加利于我们后续的处理。
  • 3.保存信息
    • 在提取信息之后,我们一般会将这些信息保存到某处以便于后续的使用,这里可以简单保存为txt文本或json文本,也可以保存到MySQL等数据库。
  • 4.会话和Cookies
    • 在浏览网站的时候通常会遇到一些需要登录才能访问的网站,这个时候,服务器会响应一个带有这些登录信息的cookies值中,用来标记客户端,在下一次客户端访问网站的时候会直接将这些信息传到服务器上,就可以免于再次登录。这里要注意的是,一般的cookies都带有保存的时间,如果过了一定的时间客户端没有去访问此网站时,服务器就会认为客户端停止了活动,才会将这些会话信息删除以节省空间。
  • 代理
    • 一般情况下,每个网站的服务器都有限制客户端访问的次数,一旦客户端访问的次数超过了这个限制,服务器就会将访问的IP地址给封掉。所以,在这种情况下,我们一般都会使用代理地址去访问网站,通过不断的更换IP地址来达到多次访问的效果。而代理的地址又分为高匿、匿名和透明,一般最好使用高匿的地址以达到让服务器认为这是一个真的地址,而透明的地址只有加快访问速度的作用。“http://www.goubanjia.com/”这个网站上有着很多的免费代理地址。
好啦,今天的学习就到这里了,下面就要开始学习有关库的使用了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值