学爬虫,我需要掌握哪些Python基础?

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_39777626/article/details/81913276

接触爬虫已经有一段时间了,常常有人问我:我会点Python,想自学爬虫,你看用什么方法好呢?
我:我喜欢边做项目边学习,爬取过程中遇到问题再百度,扩展
xx:我看了网上教材,过程很简略,最后给了一个编码,有的我实例一下好像还不成功
我:代码也会“过期”,尤其是爬虫,需要自己修改
xx:怎么修改?
我:Python学到哪了?
xx:集合
我:。。。

入手爬虫确实不要求你精通Python编程,但基础知识还是不能忽视的,那么我们需要哪些Python基础呢?
首先我们先来看看一个最简单的爬虫流程:
这里写图片描述

  1. 第一步要确定爬取页面的链接,由于我们通常爬取的内容不止一页,所以要注意看看翻页、关键字变化时链接的变化,有时候甚至要考虑到日期;另外还需要主要网页是静态、动态加载的。
  2. 第二步请求资源,这个难度不大,主要是Urllib,Request两个库的使用,必要时候翻翻官方文档即可
  3. 第三步是解析网页。请求资源成功后,返回的整个网页的源代码,这时候我们就需要定位,清洗数据了
    谈到数据,第一个要注意的点就是数据的类型,是不是该掌握!
    其次,网页上的数据往往排列十分整齐,这多亏了列表,使用大部分网页数据整洁而有规律,所以列表、循环语句是不是也要掌握!
    但值得注意得是网页数据不一定都是整齐而有规律的,比如最常见的个人信息,除了必填选项,其他部分我就不爱填,这时候部分信息缺失了,你是不是得先判断一下是否有数据,再进行抓取,所以判断语句是不是也不能少!
    掌握以上内容,我们的爬虫基本上能跑起来了,但为了提高代码效率,我们可以借助函数将一个程序分割成多个小部分,每部分负责一部分内容,这样就能根据需要多次调动一个函数了,如果你再厉害点,以后开发个爬虫软件,是不是还要再掌握个类
  4. 第四步是保存数据,是不是得先打开文件,写数据,最后关闭啊,所以是不是还得掌握文件的读写啊!

所以,你需要的掌握的最最最基本的Python知识点有
这里写图片描述

线程与进程

当然只掌握这些是远远不够的,因为我们还有分布式爬虫,爬虫框架等,这要求我们掌握线程与进程;这两个可能会比较陌生,我还没接触爬虫时候也不懂这些,所以先来看看他们的概念

  • 进程: 资源分配的最小单位
  • 线程: 程序执行的最小单位

看起来太抽象了,我们打个比方吧:
进程就相当于你打开的一个个程序,如QQ,微信,微博等,而进程就相当于程序里的每一个命令,如收发消息等
这里写图片描述

1.多线程与多进程

多线程、多进程顾名思义就是多个线程、进程并行,是实现多任务的好帮手,所以在效率上有
单进程+单线程 < 单进程+多线程 < 多进程+多线程
再来打个比方,假如我要给整个班级的同学发份资料,我可以通过微信一个一个地发给他们——单进程+单线程,但这效率实在太低了,特别费时;于是我可以选择用微信群发啊——单进程+多线程,这样效率一下子提高了很多,但问题又来了,微信群发上限是200人,假如我要给400人发文件,是不是就得分两次群发呢?为了节省时间,我还可以一部分用qq群发,一部分用微信群发,这就是多进程+多线程
这里写图片描述

比较

多进程 多线程
数据共享
同步
复杂
简单
简单
复杂
内存
CPU
占用内存多,切换复杂
利用效率低
占用内存少,切换简单
利用效率高
创建销毁
切换

复杂,速度慢

简单,速度快
编程
调试
简单
简单
复杂
复杂
可靠性 进程间不会相互影响 一个线程挂掉将导致整个进程挂掉
分布性 多核、多机 多核

2.协程

协程不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用。
在刚刚的例子中,协程又是一个怎么样的存在呢?
群发消息和调用多个程序时,都会受流量(相当于CPU)的影响而无法将资料发送出去,而假如我让同学B帮忙发资料,他发资料时候并不占用我的流量,因此效率更高,此时,同学B就相当于我的一个协程,所以协程在一定程度上又好于多线程
这里写图片描述

猜你喜欢

转载自blog.csdn.net/weixin_39777626/article/details/81913276