可能你已经猜出来了,没错,每个 Pythoneer 都知道的彩蛋,在交互式命令行输入import this,会有一段 Python 之禅格言,作者是内核开发者 Tim Peters, Guido 叔的 Python 语言设计指导原则浓缩为了 19 条开发哲学。
这段加密文本并不是我故弄玄虚,而是this 模块中的源代码,使用下面这个算法就可以解密出来
https://github.com/python/cpython/blob/master/Lib/this.py
一、基础知识
使用Python编写爬虫,当然至少得了解Python基本的语法,了解:基本数据结构
数据类型
控制流
函数的使用
模块的使用
不需要过多过深的Python知识,仅此而已。
个人推荐《Python简明教程》http://www.kuqin.com/abyteofpython_cn/、Python官方的《Python教程》http://python.usyiyi.cn/translate/python_352/tutorial/index.html
二、开发环境、操作系统:Windows 7
Python版本:Python 3.4
代码编辑运行环境:个人推荐PyCharm社区版,当然,Python自带的IDLE也行,Notepad++亦可,只要自己使用得习惯。
三、第三方依赖库requests:一个方便、简洁、高效且人性化的HTTP请求库
BeautifulSoup:HTML解析库
pymongo:MongoDB的Python封装模块
selenium:一个Web自动化测试框架,用于模拟登录和获取JS动态数据
pytesseract:一个OCR识别模块,用于验证码识别
Pillow:Python图像处理模块
四、第三方库安装:
上面列出的第三方模块大多可以通过pip install ××的方式直接安装,部分模块安装方式不一样,下面一一演示:
requests
pip install requests
BeautifulSoup
pip install bs4
pymongo
pip install pymongo
selenium
pip install selenium
Pillow
1、打开http://www.lfd.uci.edu/~gohlke/pythonlibs/
2、搜索找到“pillow”
3、根据自己系统的版本选择对应的下载包
4、安装
pip install Pillow‑4.0.0‑cp34‑cp34m‑win32.whl
pytesseract
1、pip install pytesseract
2、安装tesseract
下载并安装:https://tesseract-ocr.googlecode.com/files/tesseract-ocr-setup-3.02.02.exe
这样,我们的准备工作就基本完成,如果有另外的需求,在实战中再进行安装,接下来就可以实战Python爬虫了。
文末知识点摘要:《import this》背后的故事
大家猜猜下面这段文本是什么意思,看起来好像挺熟悉的。
可能你已经猜出来了,没错,每个 Pythoneer 都知道的彩蛋,在交互式命令行输入import this,会有一段 Python 之禅格言,作者是内核开发者 Tim Peters, Guido 叔的 Python 语言设计指导原则浓缩为了 19 条开发哲学。
这段加密文本并不是我故弄玄虚,而是this 模块中的源代码,使用下面这个算法就可以解密出来
https://github.com/python/cpython/blob/master/Lib/this.pyd = {}
for c in (65, 97):
for i in range(26):
d[chr(i+c)] = chr((i+13) % 26 + c)
print("".join([d.get(c, c) for c in s]))
这究竟是个什么算法?>>> chr(97)
'a'
>>> chr(65)
'A'
65 是大写 A 的十进制表示法,97 是小写 a 的十进制表示法。字典 d 最终会构成这样一个映射表ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
| |
NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm
26个字母从A映射到N、B映射到O、依此类推到M映射到Z,然后反转,N映射到A、O映射到B、Z映射到M,26个小写字母也是同样的机制,这就是 ROT13 密码算法。以后要是有面试官要你徒手写个 ROT 算法,你要能很快想起来。
ROT13(回转13位)是一种替换式密码,属于对称加密,加密和解密同一套算法,而且密钥都一样,它是凯撒加密的一种变体。一段文字按照字母顺序只需把当前字母用13位之后的对应字母进行替代,超过第13位的字母(从N开始)则重新绕回到字母表的开头即可。而对于非字母字符还是保持原样不变。于是,文章开头的文本经过 ROT13 转换,就是我们平常最熟悉的 Python 之禅: