一时兴起,想用 python 玩儿一下爬虫,顺便体验 python 这门语言。
Python 学习,推荐使用 Anaconda ,不过我习惯的 JetBreain 公司的工具,所以还安装了 PyCharm ,在使用时因为依赖导入失败,搞了好半天,原因是下载的 Python 解释器太多,已经傻傻分不清了~
首先,Mac 系统自带 Python 路径为/System/Library/Frameworks/Python.framework/Version
这里可能会有多个 Python 版本,里面 Current 存放系统当前 Python 版本
(注:若使用python --version
命令是查看用户当前python版本而不是系统python版本)
安装 Anaconda3 后,Python 3.6 的目录 ~/anaconda/anaconda3/python.app/Contents/MacOS/python
Homebrew是一个包管理器,他将工具统统安装到了 /usr/local/Cellar
目录中,并在 /usr/local/bin
中创建符号链接。
在玩 Tensortflow 时,安装过的虚拟环境 ~/anaconda/anaconda3/envs/tensorflow/bin/python
说实话,还是第一次接触到这种同一个语言,这么多环境的情况,感觉很蒙圈~
因此,PyCharm 选择解释器时,连路径在哪都不知道,浪费了很多时间。
在使用 Python 语言编写程序时,需要下载一个 Python 解释器,除此之外还有 Python 包文件,其中包括自带包和 第三方包 。
第三方包都放在 site-packages 文件夹里面
一个 Python 环境中需要有一个解释器, 和一个包集合 。
而 Python 存在多个版本,2.x 和 3.x 完全不兼容,有时又需要切换环境,这么多麻烦事情,自然需要一个工具来管理,Anaconda 就是来管理你的安装环境和各种工具包的。
Anaconda 是专注于数据分析的Python发行版本,包含了 conda、Python 等190多个科学包及其依赖项。
Python 我们都知道,而 conda 是什么呢?
conda 是开源包(packages)和虚拟环境(environment)的管理系统。
推荐使用 Anaconda ,一次性安装所有的相关文件,简单方便。
Anaconda 的下载地址
这里有两个版本,一个 Python 3.6 ,另一个 Python 2.7 。
推荐使用新的 Python 3.6 ,因为 Python 2.x 迟早会停止维护。
根据提示进行安装后,会出现这么一些文件:
安装完成后,首先配置 Anaconda 的环境变量,打开环境变量文件
open ~/.bash_profile
添加一行
# Anaconda3 此处填写 Anaconda 的安装路径
export PATH="/Users/deemons/anaconda/anaconda3/bin:$PATH"
保存后,更新配置文件
source ~/.bash_profile
然后,输入 python
,查看配置是否生效
➜ ~ 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 了。
我们还需要对所有工具包进行升级,以避免可能发生的错误。打开终端,在命令行中输入:
conda upgrade --all
等待着所有工具更新完成后,就可以愉快的使用了 Python 了。
Anaconda 已经自带了 web 版编辑器了,打开 Anaconda 就可以看到 Jupyter
但还是不习惯用这个,对用惯了 IDEA 的我来说,PyCharm 是最好的选择。
PyCharm 下载地址
这个也没什么好说的,下载后按照提示安装好。
现在,关键的来了。
我得将 PyCharm 的解释器设置成 Anaconda ,否则,使用 Anaconda 下载下来的那么多第三方包在PyCharm 都不能正常导入使用。
打开 PyCharm ,进入设置,选择 Anaconda 的 Python 解释器:
如此,PyCharm 就可以正常使用了。
首先,爬虫需要安装哪些环境?
参考了Python爬虫小白入门(四)PhatomJS+Selenium第一篇 系列文章后,需要安装这些包:
beautifulsoup
beautifulsoup 库可以方便的解析 HTML 的内容,也就说,可以方便提前所有可见的网页内容。
Selenium
Selenium是一个自动化测试框架,它能够模拟人工操作,比如能在浏览器中点击按钮、在输入框中输入文本、自动填充表单、还能进行浏览器窗口的切换、对弹出窗口进行操作。
这个库可以直接使用 conda 进行安装:
conda install requests
这里是 requests 的英文官方文档 和 中文官方文档 。
基本的用法如下:
import requests #导入requests库
r = requests.get('https://deemons.cn') # 向目标 url 地址发送 get 请求,返回一个response对象
print(r.text) #r.text是http response的网页HTML
通过 reueests 发起网络请求,然后获取网站的 HTML 信息。
beautifulsoup 库 有多个版本,这里安装 beautifulsoup4
conda install beautifulsoup4
这里是 beautifulsoup4 的官方文档
同时,还需要安装 lxml 来配合工作。
conda install lxml
lxml 是一个解析器,beautifulsoup4 可以使用它来解析HTML,然后提取内容。
如果,不安装 lxml ,beautifulsoup4 会使用 Python 内置的解析器。
文档解析器对照表如下:
解析器 | 使用方法 | 优势 | 劣势 |
---|---|---|---|
Python标准库 | BeautifulSoup(markup,”html.parser”) | Python的内置标准库 2. 执行速度适 3. 中文档容错能力强 | Python 2.7.3 or 3.2.2)前 的版本中文档容错能力差 |
lxml HTML 解析器 | BeautifulSoup(markup,”lxml”) | 速度快 2. 文档容错能力强 | 需要安装C语言库 |
lxml XML 解析器 | BeautifulSoup(markup,[“lxml-xml”]) BeautifulSoup(markup,”xml”) | 速度快 2. 唯一支持XML的解析器 | 需要安装C语言库 |
html5lib | BeautifulSoup(markup,”html5lib”) | 最好的容错性 2. 以浏览器的方式解析文档 3. 生成HTML5格式的文档 | 速度慢,不依赖外部扩展 |
Selenium 这是一个自动化测试框架,能模拟人工在浏览器上的操作。安装方式
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/
目录下
➜ ~ cd /usr/bin
➜ bin open .
➜ bin chromedriver --version
同时,可以配置 chromedriver 变成类似 PhatomJs 无界面形式。
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)
或者,还可以这么写
#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)