scrapy使用时的一些错误及解决方法

来源:互联网 发布:php base64 编辑:程序博客网 时间:2024/06/05 02:54

最近,想用爬虫在网上爬点数据下来,因此粗略的学习了一下scrapy。网上这方便的资料有很多,在这里就不一一贴出来了,大家可以自行去查找。在这里我只想介绍下我遇到的一些问题和解决方法。

第一个,安装问题。在网上找了很多资料,大部分都是在python的基础上安装各种库。而我安装的 Anaconda,发现里面很多库都已经安装好,因此,我们只需要使用命令

<span style="font-size:18px;">    pip install scrapy</span>
第二个,错误提示URLError:<urlopen error [Errno 10051]>.这个问题我想大家都会碰到的。解决方法是在spider.py文件中加入两句话就可以:

from scrapy import optional_featuresoptional_features.remove('boto')
具体的原因可以参考:http://www.cnblogs.com/tina-smile/p/5016599.html

第三个问题:很多教程都要一句

     from scrapy.spider import BaseSpider
这句可能会报错,是因为BaseSpider是老版本的用法,应该使用新版本中的模块。在使用过程发现scrapy还是很智能的,会有相关提示应该怎样替换。正确的导入方法是:

     from scrapy.spiders import Spider

第四个问题:属性path,这是很多老教程的用法,现在使用会报错,应该使用xpath或selector替换

第五个问题:SmgLinkExtractor模块的导入报错,因为这个模块也是老版本,即将放弃使用,应该使用LinkExtractor替换。

     from scrapy.contrib.linkextractors import LinkExtractor
第六个问题:一直提示 No module items,后来查询资料是spiders目录中的.py文件不能和项目名同名。改个名字就行了。可以参考:http://my.oschina.net/blueprint/blog/136383

第七个问题:‘ItemMeta’ object does not support item assignment.原来是是在初始化item对象是忘了在类名后加()了。比如有一个类名字叫A,而我初始化类对象时是这样的a=A忘记加括号了a=A(),这样才对。

可以参考:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece76310579135480ddd276b97844b22918448e435061e5a25a4ec66644b598f8461640bad4d5cebf72b33664373f5d0df883c8de8d37f6eca7c62275c9141648944eadc4653977dc71bfeaf6fbcfce732e5eb8f9386401697135375c1a1cb09425fdd6f81033192b198384e1947e5fa3115a00e317a882331a14788f7331e5ad1ae8a0d0ad42aa1374cc0ee22b04f4ee855b31f6a6503e20eec48173130911461a81b2a04e3b81ca6712c1c7ce114f5&p=c2759a45d4c452f049be9b7c5b0a81&newp=cb6d890285cc43f808e2947c0a52cd231601d13523808c0a3e83fe4b93645c16&user=baidu&fm=sc&query=scrapy+%27ItemMeta%27+object+does+not+support+item+assignment&qid=81492f7c0001573d&p1=2


好了,至今就遇到了这些问题,未完待续。。。。。。


给大家一个大牛的连接:http://blog.csdn.net/u012150179/article/details/32911511



0 0