转自CSDN,5年前写的第一篇技术类的文章,当时还是个小菜鸟,一转眼5年过去了
当时从知乎摘抄的别人的励志故事,激励工作不久略失意的自己(工作缺少激情),开始利用下班时间自学android开发、iOS开发、Python开发。。。
职业方向有点迷茫,就都在学。
幸运的是,公司下班较早5点多就下班了,租住在人大附近,一下班就蹭人大的自习室学习,有时蹭女友的图书馆卡去借书看。
那段日子还是挺充实的,想想现在,基本没有自己的时间,唉。。。
因工作需要,爬取数据时的小研究,当时感觉很有成就感,不过现在早就忘的差不多了,sad...
https://blog.csdn.net/webgeek/article/details/8624908
----------------------------------------------------------------------说正事分割线------------------------------------------------------------------------------------
安装scrapy的方法详解
scrapy在国内目前使用的人比较少,除了他比较新以外,还在于他本身还有很多弊端,比如:需要的支持包比较多,这些支持包相互之间的依赖关系,导致人们在安装他的时候各种吐血,而且吐血了还不一定又正确的结果!所以,今天趁自己需要换工作环境,记录点滴。
本次安装使用的系统环境是windows xp。以下给出具体步骤。我想如果照做一定能够成功哦。
1.安装python2.6.这里选择的是python2.6,为什么选择这个版本,首先,scrapy官网上明确写出:requirements:
Python 2.5, 2.6, 2.7 (3.x is not yet supported), 即目前只支持python2.5,2.6,2.7.3以上版本的python还不支持.而本人在从前使用scrapy开发的过程种发现2.5仍然又某些bug,具体的就暂时不说了。http://www.codepub.com/software/Python-12776.html 由于python官网偶尔打不开(打不开我想你懂的!),所以给了个国内的下载链接,这个链接也又可能又一天不能使用。所以需要同学们自己下了。安装python,解压后得到右边图标,双击安装,几乎不用设置就能成功,也就是说在这里如果你python环境都不会安装的话,就没必要在看后面的了,所以python的安装我真的想偷懒了。不过还是要说环境变量设置上,在我的电脑-》高级环境变量里的path种设置刚才我安装的pyton的根文件目录,这里将C:\Python26加入到环境变量:,到这里安装python结束,在cmd模式下输入执行python,产生下面的类似的画面表示python安装成功.
2.按照python官网准备安装twisted.
twisted的安装方法,安装twisted先需要zope.interface,PyopenSSL,这2个第三方包。而通过twisted官网上,我们可以看见下载的都是zope.interface,PyopenSSL等都是egg文件,那么在这里我们就先需要setuptools工具.
1.在这里下载:http://pypi.python.org/packages/2.6/s/setuptools/setuptools-0.6c11.win32-py2.6.exe 这些我给出的链接只是我当前找到的我能使用的,加入你不好使,可以尝试换一个,秉承一个原则是即是setuptools工具又是对于py2.6的。,双击这个图标执行。那么执行后在python根目录下的scripts文件夹里就会有easy_install.py等文件了,都带有easy_install字眼。easy_install工具安装完成。
2.zope_interface的安装.通过twised的下载页面:http://twistedmatrix.com/trac/wiki/Downloads 点击进行zope.interface,进入到http://pypi.python.org/pypi/zope.interface#download , 选择符合当前环境的可供下载的egg,这里我们选择zope.interface-3.6.3-py2.6-win32.egg(md5),下载后是这样的一个文件,这时候把这个egg文件拷贝进入刚才我们说道的python根目录下的scripts目录,同easy_installs等文件一个目录位置。然后进入cmd模式,在cmd模式下进入这个script目录,执行easy_install.py ?egg文件名,执行安装这个egg文件。
这里检查zope.interface是否安装成功,,在python环境中执行import zope.interface,加入不报错误,那么说明zope.interface安装正确。
3.同上,执行安装PyOpenSSL.在http://pypi.python.org/pypi/pyOpenSSL 这里,有这些版本的pyOpenSSL供你选择。在这里我们选择pyOpenSSL-0.12-py2.6-win32-egg(md5),下载得到的egg文件,按刚才安装zope.interface的方法,在安装pyOpenSSL,先将下载到的pyOpenSSL,拷贝到scripts文件夹中,然后进入到cmd模式下,在cmd模式中进入到对应的scripts文件夹下,执行easy_install.exe pyOpenSSL-0.12-py2.6-win-amd64.egg ,进行安装。效果图为
在执行验证是否安装成功:在python环境中,执行import OpenSSL,查看是否能正常执行在·导入。加入不报一场或错误,则表示安装正确。
4.安装twisted.回到twisted的下载链接:http://twistedmatrix.com/trac/wiki/Downloads,因为我们这里需要的是python2.6的对应的twisted版本。这里我们选择了第二个的exe版本。下载后双击就能安装.安装过程是自动执行的。所以也就不做过多说明,又可能发生的错误是版本对应不一致,是因为你没有选择当前和你python对应的版本的twisted.到这里twisted安装完成,但是具体是否还有问题,我们不能急于的下结论,因为当前的支持包已经有4种了,分别是setuptools,zope.interface,pyOpenSSL,twisted,而在twisted中不是还有一个 PyCrypto 2.0.1 for Python 2.5 吗?我们并没有理他,我在这里因为是使用了python2.6版本,所以先暂时不理他,但是能完全不理他吗?因为我们并不确定这个包起到的作用,或者,在python.26里,或者在对应于python26版本的twisted是否存在PyCrypto 2.0.1.或者是替代他的作用的包。所以只能说暂时,到时候在实际开发过程中如果有任何问题在考虑之。
3.按照scrapy官网,安装lxml.在scrapy 的http://doc.scrapy.org/intro/install.html#intro-install最下面的一段又关windows安装的情况。到这里点击关于lxml的选项,进入:http://users.skynet.be/sbi/libxml-python/ ,在这里我们选择了:第二项,又libxml for python2.6等关键字.安装后在python环境中执行import libxml2,如果未报错,表示正确。
4.安装scrapy.进入scrapy 官网:http://scrapy.org/download/ 这个链接,点击Scrapy 0.12 on PyPI ,注意他后面可是有括号的,(include windows installers),表示点击这里也可以在windows下安装的。进入http://pypi.python.org/pypi/Scrapy 这个页面,点击这里关于exe的格式,进行下载。下载后直接进行双击就可以执行了。这个时候查看是否在python目录下的第三方目录中(即site-package)中是否有关于scrapy的文件夹了,然后在cmd模式中任意目录输入scrapy,这时候提示出错误,是需要把python根目录下的script目录设置到环境变量中。,然后重新打开一个cmd窗口,在任意位置执行scrapy命令,得到下列页面,表示环境配置成功.
5.关于项目,比如抓取百度搜索引擎上的列表信息吧。
1.创建项目.
a.在cmd窗口中,选择一个路径。在这里我选择了F:\workspace,在这里新建一个主机的项目:scrapy startproject mobile 表示创建一个项目,根目录名为mobile.,如果没有报出错信息,那么表示项目新建成功。通过文件管理,我们可以明确的看到又这样的一个文件系统已经生成,并且在对应的文件夹下又对应的文件。
2.初步应用
初步爬虫这里只写一个最简单的爬虫,假如你遇到棘手的问题,可以同我沟通,我会尽力而为的帮你。
1.在spider文件夹下新建一个文件,该文件名为baidu.py,而里面的内容为:
from scrapy.spider import BaseSpider
class BaiduSpider(BaseSpider):
? ? name = "baidu.com"
? ? allowed_domains = ["baidu.com"]
? ? start_urls = ["http://www.baidu.com/s?wd=%CA%D6%BB%FA&inputT=2110"]
? ? def parse(self, response):
? ? ? ? filename = response.url.split("/")[-2] + '.html'
? ? ? ? open(filename, 'wb').write(response.body)
那么这里就会在项目根目录生成一个www.baidu.com.html文件名的html文件,在cmd模式下,进入项目根目录,即与scrapy.cfg同目录下,执行scrapy crawl baidu.com ?注意这里baidu.com是对应BaiduSpider类下的name属性的值.得到最终如果所示:
,最终我们将在mobile根目录下发现www.baidu.com.html文件,里面会又对应的html内容.这次先这样了,改天说说linux环境下的配置。