如何通过学习Python爬虫,让前端程序员达到Python筑基水平?
摘要:我踏马来辣 还有一件事: 本教程配合c语言中文网 python爬虫 教程 食用 本教程不适用于未成年人 一定要刷牙 本教程不存在知识诅咒 学完本教程即可进入筑基期 js 基础和本教程学习效率成正比 不要笑 暂时不要驾驶你的行李箱 本教程是针
我踏马来辣
还有一件事:
本教程配合c语言中文网 python爬虫 教程 食用
本教程不适用于未成年人
一定要刷牙
本教程不存在知识诅咒
学完本教程即可进入筑基期
js 基础和本教程学习效率成正比
不要笑
暂时不要驾驶你的行李箱
本教程是针对前端程序员制定的
vscode是IDE大王,什么?你说vscode不是IDE?
令我惊喜的是 py和js有很多相似的地方 甚至作为一个前端程序员,在看到python代码的那一刻,倍感亲切
都是脚本语言
都有弱类型变量
都不用写分号,当然也可以写
都有自己的包管理库 py是 pip , js是 npm 参见 npm 和 pip 介绍
本来我觉得js已经够自由了,弱类型变量、以回车结束语句、简洁明了又极度自由的语法,而python代码则更为简洁
如果你也是正在学习Python的前端程序员,那么你一定跟我感同身受
py定义变量时甚至不需要 关键词 (js是 let var),这个东西甚至简洁到让我怀疑它是不是真的能用
可能写C++的人看到 js 代码也会有这种疑惑
相信看到这里,你和我有了一个共同的问题:既然简洁到这种程度,那我想定义一个常量该怎么办?牛逼的事情来了,python摒弃了常量这个东西,我觉得是py认为常量太不纯粹,我为什么需要一个不能修改的值?于是,python没有常量,如果你实在需要一个常量,也可以 通过其他方式实现
如果你的编程生涯也是从切图仔做起的,不懂什么数据结构、计算机原理、编译原理,那么你可能会对下面的代码产生疑惑
import urllib.request
和 js 相比较,这个写法简直奇怪到姥姥家了,主要的疑问有两点:1.我从没有下载过这个包,怎么引入成功了?2.我怎么知道哪些包可以引用?参见 Python是如何找包的,Python安装的包放在哪里 ,当然的然,没有下载过一个包,或者py没有自带这个包,也就是说,你本地没有这个包的情况下,也是不能引入的,只是py的解释器会自动在配置好的路径中去查找这个包。
就比如 在标准npm项目中 的使用import引入,会自动去node_modules中查找一样
在js中,我想实现某个相较复杂的功能,会先去npm上搜索有没有可用包,这是正常操作。在py中,也有类似的操作,且py能干的事情不再局限在web的前后端上,所以py的包几乎涵盖了所有领域,这也是py崛起的原因之一。作为一个py新手,如果你想实现一个功能,不妨先去pip上搜一下。
我看到的py爬虫教程,第一个程序是这么写的
import urllib.request
response = urllib.request.urlopen('http://www.baidu.com/')
print(response)
html = response.read().decode('utf-8')
print(html)
显然,如果你有一点任何语言的基础,那么这几行代码根本不需要注释,py十分贴近自然语言,这也是我为什么选择py作为第二语言的原因。
对与上面的代码,需要注意的点有:
引入时不是以斜杠而是以点表示下级的,而且不需要引号或括号
定义变量不需要关键字 像上面的 response = 和 html = 都是变量的定义(py中可以直接叫赋值,因为其实就是赋值操作,如果想定义一个空变量可以使其 = null)
还可以这么写 from urllib import request (甚至接近中文表达方式,和es6相反)
本节教程:http://c.biancheng.net/python_spider/the-first-spider.html
再多一点点
半路出家的前端人,对网络协议、网络请求也知之甚少,要学习爬虫,对此要有进一步的了解。首先,各大网站都对爬虫做了一些限制,比如监测到爬虫频繁访问的话,有可能对该ip进行短时间的封锁,比如常见的:“操作频繁”提示,就是对ip的一种封锁,在前端的眼里,这个操作叫节流和防抖,在py爬虫上,叫做反爬。
网站对爬虫做出限制,其实是很好理解的,因为不同于普通的浏览器用户(真人),爬虫有能力大量频繁的访问,可能会对服务器造成负担。当然,也不是不希望爬虫去访问,相反的,很多网站其实是欢迎爬虫的,因为这有利于在百度等搜索引擎的关键词排名,也就是常常听说的SEO。总之就是一句话,想让你爬,但不想让你会会的爬,年轻人不要太气盛。
不气盛还叫年轻人吗?
我们知道,一个大型网站的访问的数量级是很大的,爬虫,多我一个不多,少我一个不少。我如果就想不断地、频繁的访问怎么办?User-Agent,用户代理。
