美文网首页
python小白学习笔记:scrapy错误记录

python小白学习笔记:scrapy错误记录

作者: 便利贴小同学 | 来源:发表于2020-07-18 23:59 被阅读0次

    早就想恢复每天在简书上写点啥的习惯,但没想到,表达欲望和写作灵感居然同时枯竭。直到今天,一个普通的周六,像往常的周末一样,本打算用来补上工作日欠下的编程课,结果被bug支配了一整天。

    经历了出现bug时的意外,找不到bug时的苦恼,强迫自己从一大堆运行结果中搜索报错信息、比对标准教程找bug的烦躁,发现自己居然犯了许多低级错误的无奈……到现在,终于独立且完好地完成了今天的学习内容。

    我也因此终于痛下决心,准备好好总结在学编程过程中的花式犯错。(之前一直都想,但也只是想想而已,真的太懒了……

    今天是我学习python的第59天,学习内容是scrapy框架。我理解就是一组方便操作者快速搭建爬虫程序的代码库。

    scrapy 框架的组成

    第0个问题:scrapy 的安装

    教学系统一开始就提示我,如果需要在本地电脑运行,要自行安装scrapy。可是,我按照给定的做法(在终端中输入“pip install scrapy”),却无论如何也不行,大面积爆红。根据报错信息,在网上检索了很多教程之后,终于发现了一个最稳妥的做法:

    1.下载Twisted

    下载地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted

    点击下载地址,进入后按  ctrl+f ,搜索twisted,然后下载对应版本:cp27表示python2.7版本、cp38表示python3.8版本;win32表示Windows32位操作系统、win_amd64表示Windows64位操作系统。

    2.安装Twisted

    下载完成后,进入终端,切换路径到该文件所在的文件夹下,然后输入pip install 文件名。【切换路径的方法是“cd+空格+文件夹名称”】

    3.安装scrapy

    安装Twisted后,再在终端输入pip install scrapy

    第1个问题:我该修改哪个文件的代码

    终于安装好之后,我就兴冲冲地按照教学指引敲代码了。然而,原样敲完之后,发现居然又报错了。翻了翻前几天学习群里大家的提问和助教的答疑,发现,我少修改了一个文件的代码。

    图中items.py文件的代码被我漏掉了

    想要让scrapy发挥作用,首先需要正确设置各个模块的参数。我把大部分的注意力都放在了核心文件中,没有注意到应该在items.py中先行定义数据。

    当然,除了items.py之外,settings.py和pipelines.py在大多数情况下也是需要修改的,只不过我这次没有漏掉他们。

    第2个问题:层级错误

    这一部分其实不是新内容了,之前在基础部分已经接触过。但可惜那个时候掌握得就不太扎实,这两块也是让我今天不停找bug但是哪哪都找不到的核心原因。

    正确答案是这样写的:

    class DoubanSpider(scrapy.Spider):

        name = 'douban'

        ……(省略)……

        def parse(self, response):

            bs = BeautifulSoup(response.text,'html.parser)

            ……(省略)……

    而我是这样写的:

    class DoubanSpider(scrapy.Spider):

        name = 'douban'

    ……(省略)……

    def parse(self, response):

        bs = BeautifulSoup(response.text,'html.parser)

    ……(省略)……

    从表面看,内容是一模一样的,但是语言的层级却出了问题,导致一直报错,找了一下午的bug。

    第3个问题:项目名称错误导致无法call back

    由于粗心大意,在最开始建项目的时候把名字打错了(应该是douban,达成了doban)。但是后期在代码中使用的都是DoubanItem、DoubanSpider,因此导致了报错。

    不过和上一个问题比,这个简直是小巫见大巫了,大概只用了10分钟就彻底解决了。没错,就是删掉重新建立项目了。

    第4个问题:unkown command crawl

    严格来说,我不认为这是我的问题。因为按照教程说的做(在根目录中建立main.py文档,写入并执行cmdline命令),就是会出现这个问题,即便是下载了所谓的正确答案,也会出现这个问题。但是选择另一种方法,就每次都不会错啦。

    from scrapy import cmdline

    import sys,os

    dirpath=os.path.dirname(os.path.abspath(__file__))

    # 获取当前路径

    print(dirpath)

    sys.path.append(dirpath)  # 将路径添加到sys.path

    os.chdir(dirpath)        # 切换到当前目录

    cmdline.execute(['scrapy','crawl','douban'])

    # 项目不同,把douban改为你项目的

    我相信,在学习编程这条路上,以后应该还会有大量的bug和错误等待着我吧。之所以没有选择自己默默整理错误,而是把这份文档公开,也是希望能够对初学者有一点帮助。毕竟,我每次出了错不知道该怎么办的时候,也都是靠百度前辈们的学习笔记慢慢摸索出正确的方向呢。

    每当遇到困难想放弃的时候,问问自己:我当时为什么选择开始?

    愿不忘初心~未完待续~

    相关文章

      网友评论

          本文标题:python小白学习笔记:scrapy错误记录

          本文链接:https://www.haomeiwen.com/subject/qorqkktx.html