Python 爬虫相关环境

nada-636066-unsplash

一时兴起,想用 python 玩儿一下爬虫,顺便体验 python 这门语言。


前言

Python 学习,推荐使用 Anaconda ,不过我习惯的 JetBreain 公司的工具,所以还安装了 PyCharm ,在使用时因为依赖导入失败,搞了好半天,原因是下载的 Python 解释器太多,已经傻傻分不清了~

  1. 首先,Mac 系统自带 Python 路径为/System/Library/Frameworks/Python.framework/Version

    这里可能会有多个 Python 版本,里面 Current 存放系统当前 Python 版本

    (注:若使用python --version命令是查看用户当前python版本而不是系统python版本)

  2. 安装 Anaconda3 后,Python 3.6 的目录 ~/anaconda/anaconda3/python.app/Contents/MacOS/python

  3. Homebrew是一个包管理器,他将工具统统安装到了 /usr/local/Cellar目录中,并在 /usr/local/bin 中创建符号链接。

  4. 在玩 Tensortflow 时,安装过的虚拟环境 ~/anaconda/anaconda3/envs/tensorflow/bin/python

说实话,还是第一次接触到这种同一个语言,这么多环境的情况,感觉很蒙圈~

因此,PyCharm 选择解释器时,连路径在哪都不知道,浪费了很多时间。


Python

在使用 Python 语言编写程序时,需要下载一个 Python 解释器,除此之外还有 Python 包文件,其中包括自带包第三方包

第三方包都放在 site-packages 文件夹里面

一个 Python 环境中需要有一个解释器, 和一个包集合
而 Python 存在多个版本,2.x 和 3.x 完全不兼容,有时又需要切换环境,这么多麻烦事情,自然需要一个工具来管理,Anaconda 就是来管理你的安装环境和各种工具包的。


Anaconda

Anaconda 是专注于数据分析的Python发行版本,包含了 condaPython 等190多个科学包及其依赖项。

Python 我们都知道,而 conda 是什么呢?

conda 是开源包(packages)和虚拟环境(environment)的管理系统。

  • packages 管理: 可以使用 conda 来安装、更新 、卸载工具包 ,并且它更关注于数据科学相关的工具包。在安装 anaconda 时就预先集成了像 Numpy、Scipy、 pandas、Scikit-learn 这些在数据分析中常用的包。另外值得一提的是,conda 并不仅仅管理Python的工具包,它也能安装非python的包。比如在新版的 Anaconda 中就可以安装R语言的集成开发环境 Rstudio。
  • 虚拟环境管理: 在conda中可以建立多个虚拟环境,用于隔离不同项目所需的不同版本的工具包,以防止版本上的冲突。对纠结于 Python 版本的同学们,我们也可以建立 Python2 和 Python3 两个环境,来分别运行不同版本的 Python 代码。

推荐使用 Anaconda ,一次性安装所有的相关文件,简单方便。


Anaconda 的下载地址

这里有两个版本,一个 Python 3.6 ,另一个 Python 2.7

推荐使用新的 Python 3.6 ,因为 Python 2.x 迟早会停止维护。

根据提示进行安装后,会出现这么一些文件:

  • Anaconda Navigtor :用于管理工具包和环境的图形用户界面,后续涉及的众多管理命令也可以在 Navigator 中手工实现。
  • Jupyter notebook :基于web的交互式计算环境,可以编辑易于人们阅读的文档,用于展示数据分析的过程。
  • qtconsole :一个可执行 IPython 的仿终端图形界面程序,相比 Python Shell 界面,qtconsole 可以直接显示代码生成的图形,实现多行代码输入执行,以及内置许多有用的功能和函数。
  • spyder :一个使用Python语言、跨平台的、科学运算集成开发环境。


安装完成后,首先配置 Anaconda 的环境变量,打开环境变量文件

1
open ~/.bash_profile

添加一行

1
2
# Anaconda3 此处填写 Anaconda 的安装路径
export PATH="/Users/deemons/anaconda/anaconda3/bin:$PATH"

保存后,更新配置文件

1
source ~/.bash_profile

然后,输入 python ,查看配置是否生效

1
2
3
4
5
➜ ~ python
Python 3.6.3 |Anaconda custom (64-bit)| (default, Oct 6 2017, 12:04:38)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

可以看到,现在的 python 默认改为 Anaconda 里面自带的 Python 了。

我们还需要对所有工具包进行升级,以避免可能发生的错误。打开终端,在命令行中输入:

1
conda upgrade --all

等待着所有工具更新完成后,就可以愉快的使用了 Python 了。


PyCharm 配置

Anaconda 已经自带了 web 版编辑器了,打开 Anaconda 就可以看到 Jupyter

web python

但还是不习惯用这个,对用惯了 IDEA 的我来说,PyCharm 是最好的选择。

PyCharm 下载地址

这个也没什么好说的,下载后按照提示安装好。

现在,关键的来了。

我得将 PyCharm 的解释器设置成 Anaconda ,否则,使用 Anaconda 下载下来的那么多第三方包在PyCharm 都不能正常导入使用。
打开 PyCharm ,进入设置,选择 Anaconda 的 Python 解释器:
pycharm interpreter

如此,PyCharm 就可以正常使用了。


爬虫环境安装

首先,爬虫需要安装哪些环境?
参考了Python爬虫小白入门(四)PhatomJS+Selenium第一篇 系列文章后,需要安装这些包:

  • requests
    requests 是 Python 中的网络请求库。
  • beautifulsoup

    beautifulsoup 库可以方便的解析 HTML 的内容,也就说,可以方便提前所有可见的网页内容。

  • Selenium

    Selenium是一个自动化测试框架,它能够模拟人工操作,比如能在浏览器中点击按钮、在输入框中输入文本、自动填充表单、还能进行浏览器窗口的切换、对弹出窗口进行操作。


requests

这个库可以直接使用 conda 进行安装:

1
conda install requests

这里是 requests英文官方文档中文官方文档

基本的用法如下:

1
2
3
4
import requests #导入requests库
r = requests.get('https://deemons.cn') # 向目标 url 地址发送 get 请求,返回一个response对象
print(r.text) #r.text是http response的网页HTML

通过 reueests 发起网络请求,然后获取网站的 HTML 信息。

####beautifulsoup

beautifulsoup 库 有多个版本,这里安装 beautifulsoup4

1
conda install beautifulsoup4

这里是 beautifulsoup4官方文档

同时,还需要安装 lxml 来配合工作。

1
conda install lxml

lxml 是一个解析器,beautifulsoup4 可以使用它来解析HTML,然后提取内容。

如果,不安装 lxmlbeautifulsoup4 会使用 Python 内置的解析器。

文档解析器对照表如下:

解析器 使用方法 优势 劣势
Python标准库 BeautifulSoup(markup,”html.parser”) 1. Python的内置标准库 2. 执行速度适 3. 中文档容错能力强 Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差
lxml HTML 解析器 BeautifulSoup(markup,”lxml”) 1. 速度快 2. 文档容错能力强 需要安装C语言库
lxml XML 解析器 BeautifulSoup(markup,[“lxml-xml”]) BeautifulSoup(markup,”xml”) 1. 速度快 2. 唯一支持XML的解析器 需要安装C语言库
html5lib BeautifulSoup(markup,”html5lib”) 1. 最好的容错性 2. 以浏览器的方式解析文档 3. 生成HTML5格式的文档 速度慢,不依赖外部扩展


Selenium

Selenium 这是一个自动化测试框架,能模拟人工在浏览器上的操作。安装方式

1
conda install selenium

Selenium Python 语言官网:Selenium with Python

如果需要使用 Chorme 浏览器,必须下载当前 Chorme 版本相匹配的驱动,Chorme 驱动下载地址

chrome和 chromedriver 的版本映射表

chromedriver版本 支持的Chrome版本
v2.40 v66-68
v2.39 v66-68
v2.38 v65-67
v2.37 v64-66
v2.36 v63-65
v2.35 v62-64
v2.34 v61-63
v2.33 v60-62
v2.32 v59-61
v2.31 v58-60
v2.30 v58-60

Mac 下,将下载的文件解压,提取出 chromedriver 文件,并移动到 /usr/bin/ 目录下

1
2
3
➜ ~ cd /usr/bin
➜ bin open .
➜ bin chromedriver --version

同时,可以配置 chromedriver 变成类似 PhatomJs 无界面形式。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from selenium import webdriver
# 创建chrome参数对象
opt = webdriver.ChromeOptions()
# 把chrome设置成无界面模式,不论windows还是linux都可以,自动适配对应参数
opt.set_headless()
# 创建chrome无界面对象
driver = webdriver.Chrome(options=opt)
# 访问百度
driver.get('https://baidu.com/')
#打印内容
print(driver.page_source)

或者,还可以这么写

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#selenium:3.12.0
#webdriver:2.38
#chrome.exe: 65.0.3325.181(正式版本) (32 位)
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
chrome_options.add_argument('window-size=1920x3000') #指定浏览器分辨率
chrome_options.add_argument('--disable-gpu') #谷歌文档提到需要加上这个属性来规避bug
chrome_options.add_argument('--hide-scrollbars') #隐藏滚动条, 应对一些特殊页面
chrome_options.add_argument('blink-settings=imagesEnabled=false') #不加载图片, 提升速度
chrome_options.add_argument('--headless') #浏览器不提供可视化页面. linux下如果系统不支持可视化不加这条会启动失败
chrome_options.binary_location = r"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" #手动指定使用的浏览器位置
driver=webdriver.Chrome(chrome_options=chrome_options)
driver.get('https://www.baidu.com')
print('hao123' in driver.page_source)
driver.close() #切记关闭浏览器,回收资源

到此,爬虫的基本环境算是搭建好了。


参考

Python爬虫小白入门(一)写在前面 系列

使用python3的Selenium启动chromedriver

Mac下安装Anaconda,以及在PyCharm中的配置

selenium使用chrome浏览器

致Python初学者:Anaconda入门使用指南

Anaconda完全入门指南

从无到有:一周搞定爬虫(Python3.x + Selenium + Chrome + ChromeDriver)



坚持分享技术,但行好事,莫问前程 ~^o^~