爬虫能够简单分为几步:抓取页面,分析页面和存储数据javascript
在页面爬取的过程当中咱们须要模拟浏览器向服务器发送请求,因此须要用到一些python库来实现HTTP的请求操做,咱们用到的第三方库有requests Selenium 和aiohttpcss
相关连接:html
安装:java
最好用的安装方式:pip 安装node
pip3 install requestspython
验证是否安装成功mysql
打开控制台进入命令行模式,首先输入python3 而后输入import requests 若是什么报错或提示说明安装成功linux
#!/usr/bin/env python # -*- coding:utf-8 -*- #__author__=v_zhangjunjie02 import requests
selenium是一种自动化测试工具,利用它能够驱动浏览器执行特定的动做,如点击,下拉等操做,对于一些JavaScript 渲染的页面来讲,这种抓取方式很是有效,下面来看看selenium 的安装过程android
相关连接ios
仍是用pip 安装
pip3 install selenium
验证是否安装成功:
打开控制台进入命令行模式,首先输入python3 而后输入import selenium 若是什么报错或提示说明安装成功
前面咱们已经安装好了Selenium库,可是它是一个自动的测试工具,须要浏览器来配合使用,下面咱们是Chrome浏览器和ChromeDriver驱动的配置
首先下载chromedriver
随后安装chromedriver ,由于安装了Chromedriver 才能驱动Chrome完成相应的操做
Chromedriver 相关连接
安装的chromedriver 要和Chrome 的版本一致
1.下载完成后 将ChromeDriver 的可执行文件配置到环境变量下
在Windows下建议直接将chromedriver.exe 文件拖拽到Python的Script 目录下,此外还能够单独配置其所在路径到环境变量
在Linux 和Mac 下须要将可执行文件配置到环境变量,或将文件移动到所属环境变量的文件里
例如,要移动文件到/user/bin 目录 ,首先须要在命令行模式下进入其文件的所在路径,而后将其移动到/user/bin:
sudo mv chromedriver /user/bin
另外若是你的系统是Mac OS X EI Capitan 及更新版本的话,须要关闭Rootless 内核保护机制,具体参考http://www.pc6.com/edu/86809.html
固然,也能够将ChromeDriver 配置到$PATH :首先,能够将可执行文件放到某一目录,目录能够任意选择,例如将当前的可执行文件放到/user/local/chromedriver 目录下,接下来在Linux 下修改~/.profile 文件,在Mac 下能够修改~/.bash_profile文件添加以下内容
export PATH="$PATH:/usr/local/chromedriver"
保存后Linux下执行以下命令:
source ~/.profile
在mac 下执行:
source ~/.bash_profile
便可完成环境变量的添加
咱们在程序中测试,执行以下代码:
from selenium import webdriver
browser=webdriver.Chrome()
运行以后,若是弹出一个空白的Chrome 浏览器,则证实全部的配置都没有问题,若是没有弹出,则须要检查以前的每一步配置
若是弹出后闪退,多是Chrome 版本和chromedriver 版本不兼容致使的,更换对应的版本便可
GeckoDriver 是Firefox 浏览器的驱动
它的安装以下:
相关连接:
咱们能够在github 上找到它的发行版本
环境变量配置同上
phantomjs 是一个无界面,可脚本编程的WebKit浏览器引擎,它原生支持多种Web 标准:DOM操做,css 选择器,JSON ,Canvas 以及SVG
selenium支持phantomjs ,在运行的时候不会弹出一个浏览器,并且phantomjs 的运行效率也很高,还支持各类参数配置,使用很是方便:它的安装以下:
相关连接:
咱们在官网上下载对应的安装包后,须要将可执行文件添加进环境变量(环境变量的添加方法,同上)
验证是否配置成功:在命令行输入phantomjs-v 若是输出对应的版本,说明配置成功
验证是否安装成功:
from selenium import webdriver
browser=webdriver.PhantomJS()
browser.get('https://www.baidu.com')
print(browser.current_url)
运行后不会有浏览器弹出,可是把url打印出来了,说明安装成功了
以前介绍的requests 库是一个阻塞式HTTP请求库,当咱们发送一个请求后,程序会一直等待服务器响应,直到获得响应后程序才会作下一步处理,其实这个过程比较费时,若是程序能够在等待的过程当中作一些其余的事情,如请求的调度,响应的处理等,那么爬取效率必定会大大提升
aiohttp 就是这样一个提供异步web服务的库,从python3.5 开始,Python加入了async/await 关键字,使的回调的方法更加直观和人性化,aiohttp 的异步操做借助于 async/await 关键字的写法变得更加简洁,架构更加清晰,使用异步请求库进行数据抓取时,会大大提升s效率(好比维护一个代理池,利用异步的方式检测大量代理的运行状况,会极大提高效率)
它的安装:
相关连接:
pip 安装
pip3 install aiohttp
另外,官方还推荐安装以下两个库:一个是字符编码检测库cchardet ,另外一个是加速DNS的解析库aiodns 安装命令以下
pip3 install cchardet aiodns
测试安装:
在python命令下导入 import aiohttp 若是没有报错,说明安装成功
抓取网页以后,下一步就是从网页中提取信息,提取信息的方式有多种多样,可使用正则来提取,可是写起来相对比较繁琐,这里还有不少强大的解析库:如 lxml ,Beautiful Soup ,pyquery 等,此外还提供了大量的解析方法。如Xpath 解析和CSS 选择器解析等,利用它,们咱们能够便捷高效的从网页中提取有用的信息
lxml 是python的一个解析库,支持HTML 和XML 的解析,支持Xpath 解析方式,并且解析效率很是高,它的安装以下:
相关连接:
官方网站:http://lxml.de
GitHub: https://github.com/lxml/lxml
PyPI: https://pypi.python.org/pypi/lxml
mac 下安装
使用pip 安装:pip3 install lxml
若是产生错误,能够执行以下命令将必要的类库安装
xcode-select --install
以后再从新尝试pip 安装就没有问题了
lxml 是一个很是重要的库,后面的Beautiful Soup Scrapy 都要用到此库,因此必定要安装成功
Beautiful soup 是python的一个HTML 或XML的解析库,咱们能够用它来方便的从网页中提取数据,它拥有强大的API和多样的解析方式,它的安装以下:
相关连接:
官方文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc
中文文档:https://www.crummy.com/software/BeautifulSoup/bs4/doc.zh
PyPi:https://pypi.python.org/pypi/beautifulsoup4
准备工做:
Beautiful soup 的HTML ,XML的解析库依赖于 lxml 库,因此安装以前确保已经安装成功了 lxml 库
pip 安装
pip3 install beautifulsoup4
验证安装:
from bs4 import BeautifulSoup
soup=BeautifulSoup('<p>Hello</p>','lxml')
print(soup.p.string)
运行结果以下:
Hello
若是一致,说明安装成功
⚠️注意,这里咱们虽然安装的是beautifulsoft4 这个包,可是引入的时候却引入bs4, 这是由于这个包源代码自己的库文件夹的名称就是bs4
pyquery 一样是一个强大的网页解析工具,它提供了相似 jQuery 相似的语法来解析HTML文档,支持css 选择器,使用很是方便,它的安装以下:
相关连接:
GitHub:https://github.com/gawel/pyquery
PyPI : https://pypi.python.org/pypi/pyquery
官方文档:http://pyquery.readthedocs.io
pip 安装
pip3 install pyquery
验证同上
在爬虫的过程当中不免会遇到各类各样的验证码,大多数验证码都是图形验证码,这时候咱们能够直接用ocr 来识别
tesserocr是python的一个OCR库,但实际上是对tesseract 作的一层Python API 的封装,因此它的核心是tesseract ,所以在安装tesserocr 以前,咱们须要安装tesseract
相关连接
Mac 下安装
brew 的安装参考:https://brew.sh/
或在终端执行/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
首先使用Homebrew 安装ImageMagick 和tesseract
brew install imagemagick
brew install tesseract --all-languages
接下来咱们再安装tesserocr
pip3 install tesserocr pillow
这样咱们便完成了tessercor 的安装
MySql 是一个轻量级的关系型数据库,
相关连接
mac 下安装
brew instal mysql
启动,中止和重启MySQl服务的命令
sudo mysql.server start
sudo mysql.server stop
sudo mysql.server restart
mongoDB 是由c++ 语言编写的非关系型数据库,是一个基于分布式文件存储的开源数据库系统,其内容存储形式相似json 对象,他的字段值能够包含其余文档,数组及文档数组,很是灵活
mangoDB 支持多种平台,包括windows,linux ,MAX OS 在其官方网站上(http://www.mangodb.com/download-center)都可找到对应的安装包
它的安装过程
Mac 下安装
brew install mongodb
而后新建一个文件夹/data/db 用于存放MongoDB 数据
这里启动MongoDB 服务的命令以下
brew services start mongodb
sudo mongod
中止和重启MongoDB 服务的命令分别是
brew services stop mongodb
brew services restart mongodb
这里推荐一个可视化工具 RoboMongo/Robo 3T 官方网站为:https://robomongo.org/下载连接:https://robomongo.org/download
redis 是一个基于内存很是高效的非关系型数据库,它的安装以下
相关连接
mac 下安装
brew install redis
启动Redis 服务的命令以下
brew services start redis
redis-server /use/local/etc/redis.conf
在mac 下Redis 的配置文件路径是/user/local/etc/redis.conf 能够经过修改它来配置访问密码
修改配置文件后,须要重启Redis 服务,中止和重启Redis 服务的命令分别以下
brew services stop redis
brew services restart redis
另外,在mac 下能够安装Redis Desktop Manager 可视化管理工具来管理Redis
相关连接
pip安装
pip3 install pymysql
pip3 install pymongo
pip3 install redis
它是一个用于将redis 数据导入导出的工具,基于Ruby实现,要想安装它先的安装Ruby、
1.相关连接:
GitHub :https://github.com/delano/redis-dump
官方文档:http://delanotes.com/redis-dump
2.安装Ruby
参考:http://www.ruby-lang.org/zh_cn/documentation
3.gem 安装
gem install redis-dump
4.验证安装
redis-dump
redis-load
若是这两条命令能够成功调用,说明安装成功
相关连接
Github:https://github.com/pallets/flask
官方文档:http://flask.pocoo.org
中文文档:http://docs.jinkan.org/docs/flask
PyPi: https://pypi.python.org/pypi/Flask
安装
pip3 install flask
tornado是一个支持异步的web框架,经过使用非阻塞I/O 流,它能够支持成千上万的开放连接,效率很是高
1.相关连接
GitHub : https://github.com/tornadoweb/tornado
PyPI : https://pypi.python.org/pypi/tornado
官方文档: http://www.tornadoweb.org
安装
pip install tornado
mitmproxy 是一个支持http和https 的抓包程序,相似于fiddler 和charles 只不过,它是经过控制台的形式去操做
此外mitproxy 还有两个相关组件,mitmdump ,它是mitmproxy 的命令行接口,利用它能够对接python脚本,实现监听后的处理;一个是mitmweb 它是一个web程序,经过它能够清楚的观察到mitmproxy 捕获的请求
它们的安装以下:
安装方式一:mac 下安装
pip3 install mitmproxy
若是不行执行
brew install mitmproxy
对于mitmproxy 来讲,若是想捕获https 请求须要设置证书,mitmproxy 在安装后会提供一套CA证书,只要客户端信任了mitmproxy 提供的证书,就能够经过mitmproxy 捕获https请求
首先运行如下命令产生CA证书
mitmdump
接下来在用户目录下的.mitmproxy 目录里找到CA 证书,证书一共有5个
Appium是移动端的自动化测试工具,利用它能够驱动Android 和 IOS 等设备完成自动化的测试 其官方网站为:http://appium.io
1.相关连接:
GitHub : https://github.com/appium/appium
官方网站:http://appium.io
官方文档:http://appium.io/introduction.html
下载连接:https://github.com/appium/appium-desktop/release
Python Client :https://github.com/appium/python-clent
安装appium
appium 负责驱动移动端来完成一系列操做对于ios 来讲,它使用苹果的UIAutonation 来实现驱动,对于Android 来讲,它使用UIAutomator 和Selendroid 来实现驱动
同时Appiumd 至关于一个服务器,咱们能够向它发送一些操做指令,他会根据不一样的指令对移动端设备完成不一样的操做
安装Appium 有两种方式,一种是直接下载Appium Desktop 来安装,另外一种是经过node.js 来安装
Appium Desktop
连接地址:https://github.com/appium/appium-desktop/releases
推荐使用node.js 安装
使用node.js 安装先要安装node.js 参考连接:http://www.runoob.com/nodejs/nodejs-install-setup.html
而后使用命令npm install -g appium 安装,这条命令执行完后就完成了appium 的安装
Android 开发环境的配置
Android 环境的配置
下载Android Studio (https://developer.android.com/studio/index.html?hl=zh-cn
安卓SDK的下载
下载完Android Studio后直接在Android 的设置页面勾选要安装的SDK 便可
另外须要配置下环境变量,参考地址:https://developer.android.com/studio/intro/index.html
准备工做:pyspider 是支持javascript 渲染的,并且这个过程依赖于PhantomJS 因此须要先安装PhantomJS
使用pip 安装
pip3 install pyspider
验证安装:
命令行执行
pyspider all
在浏览器中输入http://localhost:5000/