Python Scrapy数据抓取——环境安装

2016-7-5 邪哥

Python Scrapy 环境安装,系统及安装环境如下:

    CentOS 6.5 x86_64 安装 python 2.7.12

    pip  安装 scrapy 1.1

关于系统、Python、Scrapy的介绍这边就不做过多赘述了,本系列博文仅做教程说明使用

如有相关兴趣希望深入了解的,可自行搜索其官网进行查阅


ok,废话完毕,进入正题:

scrapy当前最新版本为1.1 ,依然依赖 python 2.7,而我们前面安装的CentOS 6.5自带的python为2.6,所以先进行python的安装

这边需要留意的是 新装的python与系统python为并行版本。

[root@localhost ~]# python -V
Python 2.6.6
[root@localhost ~]# cd soft/
[root@localhost ~]# wget https://www.python.org/ftp/python/2.7.12/Python-2.7.12.tgz 
#这个下载速度较慢,可自行使用其他工具下载,或搜索其他国内下载链接  然后上传到对应目录即可
[root@localhost soft]# tar -zxvf Python-2.7.12.tgz 
[root@localhost soft]# cd Python-2.7.12
[root@localhost soft]# yum -y install sqlite-devel
#注意这一步非常重要,否会导致后续新装的python 出现“No module named _sqlite3”的一系列问题
[root@localhost Python-2.7.12]# ./configure --prefix=/usr/local/python/2.7.12 \
 --enable-big-digits --enable-unicode \
 --with-threads --with-pth \
 --with-ensurepip=yes \
 --with-lto --with-pydebug
[root@localhost Python-2.7.12]# make && make install

为了保持系统的python环境不受影响,这边我们不修改相关的系统配置
使用python 2.7时,我们使用非root账户 (如前面系统安装时设置的用户) jeen

[root@localhost Python-2.7.12]# su jeen 
[jeen@localhost Python-2.7.12]# cd ~ 
[jeen@localhost ~]$ vi .bashrc 
#在文件底部追加如下内容
PATH=/usr/local/python/2.7.12/bin:$PATH
export PATH
#完成后保存后退出
[jeen@localhost ~]$ source .bashrc
[jeen@localhost ~]$ python -V       
Python 2.7.12
[jeen@localhost ~]$ pip -V
pip 8.1.1 from /usr/local/python/2.7.12/lib/python2.7/site-packages (python 2.7)
[157676 refs]
#可以看到python版本已为新安装版本  pip也已经可以使用了 
#pip是一种类似CentOS yum,PHP composer的包管理工具,当然它的面世比composer要早的多
#接下来就是scrapy 的安装了
[jeen@localhost ~]$ pip install scrapy
Collecting scrapy
  Downloading Scrapy-1.1.0-py2.py3-none-any.whl (294kB)
    100% |████████████████████████████████| 296kB 30kB/s 
Collecting service-identity (from scrapy)
  Downloading service_identity-16.0.0-py2.py3-none-any.whl
Collecting cssselect>=0.9 (from scrapy)
  Downloading cssselect-0.9.2-py2.py3-none-any.whl
Collecting queuelib (from scrapy)
  Downloading queuelib-1.4.2-py2.py3-none-any.whl
Collecting lxml (from scrapy)
  Downloading lxml-3.6.0.tar.gz (3.7MB)
    65% |████████████████████▉           | 2.4MB 25kB/s eta 0:00:50
#....
#一系列的依赖安装
#....  "/usr/local/python/2.7.12/lib/python2.7/site-packages/pip/_vendor/requests/packages/urllib3/response.py", line 240, in _error_catcher
    raise ReadTimeoutError(self._pool, None, 'Read timed out.')
ReadTimeoutError: HTTPSConnectionPool(host='pypi.python.org', port=443): Read timed out.
You are using pip version 8.1.1, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
[185395 refs]
[jeen@localhost ~]$ 
#... 结果还没安装成功就结束了
#从提示信息中可以看到 说 pip 当前版本是8.1.1,推荐使用最新的pip8.1.2
#ok  咱们根据它给的提示先进行 pip 的更新 
[jeen@localhost ~]$ pip install --upgrade pip
#这边会提示权限不足,ok  咱们回到root用户
[jeen@localhost ~]$ exit
#注意 root 没有修改环境变量  需要使用全路径
[root@localhost ~]# /usr/local/python/2.7.12/bin/pip install --upgrade pip
#...等待更新完成,为了避免后续又出现权限问题,咱们干脆使用 root 进行scray的安装
[root@localhost ~]# /usr/local/python/2.7.12/bin/pip install scrapy
#...等待安装完成
#... 这边如果你的网速非常慢的话,可能会导致多次从pipy源上断开
#...  如果你无法忍受,可以搜索一下 python安装扩展的方法 进行单独的下载安装 
#...  这边对于下载安装 先不做赘述,后续如果有必要会再单独介绍 
ok 安装完成之后 我们再次切换到 普通账户 (jeen)
[root@localhost ~]# su jeen 
[jeen@localhost root]# cd ~ 
[jeen@localhost ~]$ scrapy --version
Scrapy 1.1.0 - no active project
#....
到这边说明 scrapy 已成功安装
我们使用scrapy shell 工具做一个简单的测试
[jeen@localhost ~]$ scrapy shell http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2014/index.html --nolog
[s] Available Scrapy objects:
[s]   crawler    <scrapy.crawler.Crawler object at 0x7ffa726f6760>
[s]   item       {}
[s]   request    <GET http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2014/index.html>
[s]   response   <200 http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2014/index.html>
[s]   settings   <scrapy.settings.Settings object at 0x7ffa726f63e0>
[s]   spider     <DefaultSpider 'default' at 0x7ffa70e30290>
[s] Useful shortcuts:
[s]   shelp()           Shell help (print this help)
[s]   fetch(req_or_url) Fetch request (or URL) and update local objects
[s]   view(response)    View response in a browser
>>> print response.xpath('//title/text()').extract_first()
2014年统计用区划代码和城乡划分代码
>>> quit()
[312323 refs]
可以看到 上述过程,成功打印出了页面 http://www.stats.gov.cn/tjsj/tjbz/tjyqhdmhcxhfdm/2014/index.html 的标题
好了,关于Python及Scrapy的初步安装测试就到这边

后续我们会一步一步介绍,如何使用scrapy 创建一个项目,将样例网页中的内容抓取并存入mysql数据库 :)


发表评论: