这章主要是为网络爬虫做准备,配置一个开发环境, 为了方便,操作系统为Windows
1.1 安装Python3
主要安装Anaconda 3 64bit
1.2 请求库安装 (浏览器方面)
爬虫可以分为简单几步: 抓取页面,分析页面和存储数据。
requests库: 在抓取页面过程中,我们需要模拟浏览器向服务器发出请求。
安装方法: pip3 install requests
selenium库: 一个自动化测试工具,利用它可以驱动浏览器执行特定的动作。如点击、下拉等操作。
安装方法: pip3 install selenium
安装Chrome浏览器或ChromeDriver驱动,与Selenium对接
在 http://npm.taobao.org/mirrors/chromedriver/ 下载chromeDriver
下载后,将chromedriver.exe 复制到 C:\Users\yunys\AppData\Local\Continuum\Anaconda3\Scripts
测试是否成功: 启动python
from selenium import webdriver
browse = webdriver.Chrome()
就会弹出一个空白的Chrome浏览器。
对于Firefox来说,就需要安装GeckoDriver,与Selenium对接
在 https://github.com/mozilla/geckodriver/releases/tag/v0.23.0 下载geckodriver-v0.23.0-win64.zip
下载后,将geckodriver.exe 复制到 C:\Users\yunys\AppData\Local\Continuum\Anaconda3\Scripts
测试是否成功: 启动python
from selenium import webdriver
browse = webdriver.Firefox()
若未能启动Firefox成功,必须要安装一个 VC_redist.x64 的程序,看GeckoDriver安装说明。
https://github.com/mozilla/geckodriver/releases
-
Windows:
You must still have the Microsoft Visual Studio redistributable
runtime installed on your system for the binary to run. This
is a known bug which we weren't able fix for this release.
安装重启后,执行以上命令即可弹出Firefox。
PhantomJS是一个无界面的、可脚本编程的WebKit浏览器引擎,它原生支持多种Web标准:DOM操作,CSS选择器、JSON、Canvas以用SVG。
在 https://bitbucket.org/ariya/phantomjs/downloads/phantomjs-2.1.1-windows.zip 下载
将phantomjs.exe 复制到 C:\Users\yunys\AppData\Local\Continuum\Anaconda3\Scripts
requests库是一个阻塞式HTTP请求库, 而aiohttp是一个提供异步Web服务的库。
安装: pip3 install aiohttp
aiohttp官方推荐安装两个库: 一个字符编码检测库cchardet, 另一个是加速DNS的解析库aiodns
pip3 install cchardet aiodns
1.3 解析库的安装
抓取网页代码后,下一步就是从网页中提取信息,使用正则来提取。
lxml是Python的一个解析库,支持HTML和XML解析,支持XPath解析方法。
安装: pip3 install lxml
Beautiful Soup是Python的一个HTML或XML的解析库,从网页中提取数据。
安装: pip3 install beautifulsoup4
>>> from bs4 import BeautifulSoup
>>> soup = BeautifulSoup('<p>Hello</p>','lxml')
>>> print(soup.p.string)
Hello
pyquery一个强大的网页解析工具。
安装: pip3 install pyquery
tesserocr, 在爬虫过程中,有各种各样的验证码,可通过tesserocr来识别验证码,
tesserocr是python的一个OCR识别库,是对tesseract做的一层PythonAPI封装,核心是tesseract,在安装tesserocr之前需要先安装tesseract.
安装tesseract: https://digi.bib.uni-mannheim.de/tesseract/
下载 tesseract-ocr-setup-3.05.01.exe
tesseract --list-langs 显示支持的语言
测试tesseract是否安装成功
>tesseract f:\image.png result -l eng
Tesseract Open Source OCR Engine v3.05.01 with Leptonica
>type result.txt
Python3WebSpider
----------------------------------------------------------------------------------------
安装tesserocr比较麻烦,步骤如下:
进入Python,查看pip支持版本
import pip
import pip._internal
print(pip._internal.pep425tags.get_supported())
显示如下:
[('cp35', 'cp35m', 'win_amd64'), ('cp35', 'none', 'win_amd64'), ('py3', 'none','win_amd64'),......]
根据以上红色内容,在 https://github.com/simonflueckiger/tesserocr-windows_build/releases 查找
tesserocr-2.2.2-cp35-cp35m-win_amd64.whl 下载
然后,pip3 install tesserocr-2.2.2-cp35-cp35m-win_amd64.whl, 就将tesserocr安装完成
再安装 pillow
pip3 install pillow
最关键一步:将 C:\Program Files (x86)\Tesseract-OCR 安装目录下的 tessdata 目录拷贝到
C:\Users\yunys\AppData\Local\Continuum\Anaconda3 Anaconda3的安装目录
测试tesserocr是否安装成功
>>> import tesserocr
>>> from PIL import Image #PIL 就是 pillow
>>> image = Image.open('f:\image.png')
>>> print(tesserocr.image_to_text(image))
Python3WebSpider
1.4 数据库安装
数据库我选 MySQL, 具体方法这里不说了。
在Python3中,将数据存储到MySQL中,需要借助PyMySQL来操作。
安装: pip3 install pymysql
验证安装是否成功
>>> import pymysql
>>> pymysql.VERSION
(0, 9, 2, None)
>>> db = pymysql.connect('localhost','root','mysql','review')
>>> cursor = db.cursor()
>>> cursor.execute("use review")
>>> cursor.execute("select fhbh from reviewprj limit 3")
3
>>> results = cursor.fetchall()
>>> for row in results:
. print(row[0])
复核〔2013〕0636号
复核〔2013〕0637号
复核〔2013〕0638号
>>> ##成功!
这里学习一下Redis
Redis是一个基于内存的高效的非关系型数据库。
下载: https://github.com/MicrosoftArchive/redis/releases ,下载 Redis-x64-3.2.100.msi
Redis的端口是 6379, 安装后,Redis会以服务的方式在后台运行。
为了管理方便,需要安装一个 Redis Desktop Manager.
下载: https://github.com/uglide/RedisDesktopManager/releases/tag/0.8.8
redis-desktop-manager-0.8.8.384.exe
Python与redis交互用 redis-py
安装: pip3 install redis
1.5 Web库的安装
Flask是一个轻理级的Web服务程序
安装: pip3 install flask
验证安装成功
>>> app = Flask(__name__)
>>> @app.route("/")
def hello():
return "Hello world"
>>> if __name__ == "__main__":
app.run()
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
Tornado是一个支持异步的Web框架,通过使用非阻塞I/O流。
安装: pip3 install tornado
测试安装成功
import tornado.ioloop
import tornado.web
class MainHandler(tornado.web.RequestHandler):
def get(self):
self.write("Hello , world")
def make_app():
return tornado.web.Application([
(r"/", MainHandler),
])
if __name__ == "__main__":
app = make_app()
app.listen(8888)
tornado.ioloop.IOLoop.current().start()
1.6 爬虫框架的安装
pyspider: 国人编写的强大的网络爬虫框架,带有强大的WebUI,脚本编辑器,任务控制器、项目管理器和结果处理器。
安装: pip3 install pyspider
scrapy: 另一个爬虫框架
安装: conda install Scrapy
大部分的安装环境和配置已完成,待在以后发现运行有问题再回来修改!