学爬虫,需要掌握哪些Python基础?
入手爬虫确实不要求你精通Python编程,但基础知识还是不能忽视的,那么我们需要哪些Python基础呢?
首先我们先来看看一个最简单的爬虫流程:
第一步要确定爬取页面的链接,由于我们通常爬取的内容不止一页,所以要注意看看翻页、关键字变化时链接的变化,有时候甚至要考虑到日期;另外还需要主要网页是静态、动态加载的。
第二步请求资源,这个难度不大,主要是Urllib,Request两个库的使用,必要时候翻翻官方文档即可
第三步是解析网页。请求资源成功后,返回的整个网页的源代码,这时候我们就需要定位,清洗数据了
谈到数据,第一个要注意的点就是数据的类型,是不是该掌握!
其次,网页上的数据往往排列十分整齐,这多亏了列表,使用大部分网页数据整洁而有规律,所以列表、循环语句是不是也要掌握!
但值得注意得是网页数据不一定都是整齐而有规律的,比如最常见的个人信息,除了必填选项,其他部分我就不爱填,这时候部分信息缺失了,你是不是得先判断一下是否有数据,再进行抓取,所以判断语句是不是也不能少!
掌握以上内容,我们的爬虫基本上能跑起来了,但为了提高代码效率,我们可以借助函数将一个程序分割成多个小部分,每部分负责一部分内容,这样就能根据需要多次调动一个函数了,如果你再厉害点,以后开发个爬虫软件,是不是还要再掌握个类
第四步是保存数据,是不是得先打开文件,写数据,最后关闭啊,所以是不是还得掌握文件的读写啊!
所以,你需要的掌握的最最最基本的Python知识点有
我刚整理了一套2018最新的0基础入门和进阶教程,无私分享,加Python学习q u n :227-435-450即可获取,内附:开发工具和安装包,以及系统学习路线图
线程与进程
当然只掌握这些是远远不够的,因为我们还有分布式爬虫,爬虫框架等,这要求我们掌握线程与进程;这两个可能会比较陌生,我还没接触爬虫时候也不懂这些,所以先来看看他们的概念
进程: 资源分配的最小单位
线程: 程序执行的最小单位
看起来太抽象了,我们打个比方吧:
进程就相当于你打开的一个个程序,如QQ,微信,微博等,而进程就相当于程序里的每一个命令,如收发消息等
1.多线程与多进程
多线程、多进程顾名思义就是多个线程、进程并行,是实现多任务的好帮手,所以在效率上有
单进程+单线程 < 单进程+多线程 < 多进程+多线程
再来打个比方,假如我要给整个班级的同学发份资料,我可以通过微信一个一个地发给他们——单进程+单线程,但这效率实在太低了,特别费时;于是我可以选择用微信群发啊——单进程+多线程,这样效率一下子提高了很多,但问题又来了,微信群发上限是200人,假如我要给400人发文件,是不是就得分两次群发呢?为了节省时间,我还可以一部分用qq群发,一部分用微信群发,这就是多进程+多线程
比较
可靠性 进程间不会相互影响 一个线程挂掉将导致整个进程挂掉
分布性 多核、多机 多核
2.协程
协程不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用。
在刚刚的例子中,协程又是一个怎么样的存在呢?
群发消息和调用多个程序时,都会受流量(相当于CPU)的影响而无法将资料发送出去,而假如我让同学B帮忙发资料,他发资料时候并不占用我的流量,因此效率更高,此时,同学B就相当于我的一个协程,所以协程在一定程度上又好于多线程
学爬虫,需要掌握哪些Python基础?的更多相关文章
- python 爬虫与数据可视化--python基础知识
摘要:偶然机会接触到python语音,感觉语法简单.功能强大,刚好朋友分享了一个网课<python 爬虫与数据可视化>,于是在工作与闲暇时间学习起来,并做如下课程笔记整理,整体大概分为4个 ...
- 零基础学Python-第二章 :Python基础语法-06.变量的定义和常用操作
网络带宽计算器的原理 输出的内容用print 引入变量,在前面写一个变量,是一个有意义的单词.把123这个数值赋值给变量a 下面的代码可读性 要比上面高很多. 变量其他需要掌握的知识点 一般这样是用做 ...
- 零基础学Python-第二章 :Python基础语法-05.基础数据类型
打开终端,输入python3,这就进入了python的命令提示符. 输入type(8),返回的是int类型.用来type来判断当前的是什么类型. 字符串8转int类型. 数字123转字符串 布尔类型的 ...
- 零基础学Python-第二章 :Python基础语法-04.Python程序的书写规则
#号后面的都是注释 import是导入一个模块 结束
- 第十四章 web前端开发小白学爬虫
老猿从事IT开发快三十年了,接触互联网也很久了,但自己没有做过web前端开发,只知道与前端开发相关的一些基本概念,如B/S架构.html标签.js脚本.css样式.xml解析.cookies.http ...
- 零python基础--爬虫实践总结
网络爬虫,是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本. 爬虫主要应对的问题:1.http请求 2.解析html源码 3.应对反爬机制. 觉得爬虫挺有意思的,恰好看到知乎有人分享的一个爬虫 ...
- python网络爬虫实战PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书
点击获取提取码:vg1y python网络爬虫实战帮助读者学习Python并开发出符合自己要求的网络爬虫.网络爬虫,又被称为网页蜘蛛,网络机器人,是一种按照一定的规则,自动地抓取互联网信息的程序或者脚 ...
- 入门python有什么好的书籍推荐?纯干货推荐,你值得一看 python基础,爬虫,数据分析
Python入门书籍不用看太多,看一本就够.重要的是你要学习Python的哪个方向,或者说你对什么方向感兴趣,因为Python这门语言的应用领域比较广泛,比如说可以用来做数据分析.机器学习,也可以用来 ...
- python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。
本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...
随机推荐
- STL里的内存池实现
这个貌似有点复杂,解决的主要问题 就是 减少 内存分配次数,减少用户态核心态切换中断次数,提高运行速度,预分配 和线程池一个道理,预分配 ////////////////////自由链表 union ...
- unshift() 方法将一个或多个元素添加到数组的开头,并返回新数组的长度
var arr = [1, 2]; arr.unshift(0); //result of call is 3, the new array length //arr is [0, 1, 2] arr ...
- Hibernate 再接触 HQL
Category.java package com.bjsxt.hibernate; import javax.persistence.Entity; import javax.persistence ...
- Could not find a package configuration file provided by "Sophus",SophusConfig.cmake
CMake Error at CMakeLists.txt:5 (find_package): By not providing "FindSophus.cmake" in CMA ...
- Python设计模式 - UML - 包图(Package Diagram)
简介 包图是对各个包及包之间关系的描述,展现系统中模块与模块之间的依赖关系.一个包图可以由任何一种UML图组成,可容纳的元素有类.接口.组件.用例和其他包等.包是UML中非常常用的元素,主要作用是分类 ...
- 工欲善其事,必先利其器-ecplise配置和优化
1.eclipse下的编码设置:eclipse 中使用模板新建 JSP,xhtml等 文件时,默认的编码为:ISO-8859-1. ISO-8859-1 编码对于中文的显示是不支持的,如果要支持简体中 ...
- android 设置LOGO和app名称
mipmap和drawable目录都可以存放图片,一般情况下,将LOGO文件存放在mipmap目录,普通图片放到drawable目录. 一.在mipmap目录添加LOGO图片 在mipmap目录右键- ...
- 查看windows上次开机时间
首先在电脑上找的[计算机]图标,点击鼠标右键弹出下拉菜单,在下拉菜单里找到[管理]选项 点击下拉菜单里的[管理]选项,弹出计算机管理界面,在左侧菜单栏里的系统工具里可以看到[事件查看器]菜单 点击[时 ...
- 20165213Java第二次实验
实验二Java面向对象程序设计 实验1 实验目的与要求: 参考http://www.cnblogs.com/rocedu/p/6371315.html#SECUNITTEST 完成单元测试的学习 提交 ...
- Vux项目搭建
1.快速搭建项目模板 因为项目使用vux,所以推荐使用vux官网的airyland/vux2 模板,vue-cli工具是vue项目的搭建脚手架 默认为 webpack2 模板,如果你需要使用webpa ...