编写第一个Scrapy爬虫遇到的问题

大数据课有点水,课上跟着菜鸟教程敲一下scrapy,遇到了一些错误,问题本身并不困难,但对于我这样的菜鸟可能也要琢磨个半天,所以记录一下。

菜鸟教程连接:https://www.runoob.com/w3cnote/scrapy-detail.html

报错1: builtins.ModuleNotFoundError: No module named 'protego’
原因:缺少protego模块,使用pip install Protego命令安装一下,使用anaconda环境的也可以在里面直接安装,我采用的方法是在文件开头import protego通过pycharm的建议直接下载。(这个问题不大)

报错2: ERROR: Spider error processing <GET http://www.itcast.cn/channel/teacher.shtml> (referer: None)

这个问题主要发生在像我这种错误日志不看全的同学身上(对不起真的是我太垃圾了),最开始我以为是请求发送出了什么问题,其实错误信息的最后几行明明白白的写着
TypeError: write() argument must be str, not bytes

因此菜鸟教程上的代码是稍微有点问题的,具体可以参考那个教程最下面的笔记栏目,已经有人提出。因为response.body返回的是 bytes,所以将’w’ 更改为 ‘wb’ 。文章最后的笔记(评论)也有大佬提出可以将其 decode 成 string 类型。截图如下:

在这里插入图片描述

最后贴一下部分源码(更改后的):

import scrapy

class ItcastSpider(scrapy.Spider):
    name = 'itcast'
    allowed_domains = ['http://www.itcast.cn/']
    #start_urls = ["http://www.itcast.cn/channel/teacher.shtml#ajavaee",]
    start_urls = ("http://www.itcast.cn/channel/teacher.shtml",)

    #allowed_domains = ['www.baidu.com']
    #start_urls = ["http://www.baidu.com", ]

    def parse(self, response):
        filename = "teacher.html"
        open(filename, 'wb').write(response.body)
        # with open("teacher.html", 'wb') as f:
        #     f.write(response.body)  # 读取响应文件内容
        # pass

再垃圾也要努力啊!!!

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值