python爬虫学习-初探scrapy 遇到的一个坑

python学习终于来到了scrapy这一部分了,感觉有点复杂,一开始学习了关于scrapy的安装、项目创建、爬虫创建等知识。

在实操一个简单爬虫案例的时候,遇到了一个小问题,通过详细分析输出结果才发现了问题,在此记录一下,也给其它遇到相同问题的小伙伴提供一个解决思路。

先说下遇到问题的spider代码吧

import scrapy


class SpiderCity58Spider(scrapy.Spider):
    name = 'spider_city_58'
    allowed_domains = ['58.com']
    start_urls = ['http://bj.58.com/']

    def parse(self, response):
        html = response.body
        filename = "index.html"
        file = open(filename,'w')
        file.write(html)
        file.close()

在命令符中运行的时候,发现,输出的index.html文件是空的,再次运行还是不行,只能硬着头皮在一堆输出符中查找原因。

虽然说看着这么多东西就有点头疼,但是仔细看,发现有一处报错。

TypeError: write() argument must be str, not bytes

意思就是,file.writh(html)中html格式错误,赶紧去网上查一下这个问题吧,根据其他人的建议,Python3给open函数添加了名为encoding的新参数,而这个新参数的默认值却是‘utf-8’。这样在文件句柄上进行read和write操作时,系统就要求开发者必须传入包含Unicode字符的实例,而不接受包含二进制数据的bytes实例。

解决办法:使用二进制写入模式(‘wb’)来开启待操作文件,而不能采用字符写入模式(‘w’)。

修改了之后,完美运行。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值