Python2.7搭建的scrapy框架改用Python3.5新建工程运行旧爬虫
1.爬虫脚本中urlparse模块已经在Python3中合并为urllib,此时改为import urllib,函数调用此前的urlparse.urljoin改为urllib.parse.urljoin此时对于网页URL地址的操作就恢复预期了
脚本中调用的set函数也不需导入了,在Python3中,集合函数已归为Python的内建函数,可以直接使用
2.items脚本中定义的对象不需要修改,本身调用的类名在爬虫脚本中可用,但在爬虫脚本中导入items模块中定义的对象时,需要根据建立的工程名来更改导入的模块名,保证导入现工程名.items
3.pipelines脚本中同2一样要更改导入模块的工程名对应正确,同时保证在脚本中定义的对象名称与settings脚本中调用pipelines时的名称一致
4.settings脚本中调用的中间件名称应改为与现工程名下对应的中间件名称,同时导入的ConfigParser在Python3已改为configparser,仍是一种配置模块,在此脚本中调用方式也不需变化
5.启用现工程爬虫时,报出的Module scrapy.conf
is deprecated, use crawler.settings
attribute instead from scrapy.conf import settings类似这样的或者未找到的错误
是由于scrapy从1.7版本后就不再使用scrapy.conf文件了,此时可用from scrapy.utils.project import get_project_settings并在函数中重新定义一个变量settings = get_project_settings(),保证其他均不用变,此时即可运行
以上为个人笔记,其中的深层缘由暂未了解,其中的解决方法来源于网上各位大佬的解答分享和自己的推测和实践得来,若有不对的地方,请大家指教,谢谢