网络爬虫之基于前面爬取百度图片代码的修改的总结

前言

关于bug这没啥好说的,程序员写代码怎么可能没有bug?有则改之,无则加勉嘛…
但是有些bug,真是让人头疼,就比如我之前的一篇文章 爬取百度图片,想爬谁就爬谁 ,这篇文章的代码其实也没什么问题,问题就出在返回的数据有问题,那怎么办,当bug改呗。

问题描述

爬虫爬到百度图片,我们手动请求后发现返回的数据其实是json,那好了,直接用requests模块,requests.get(url,headers).json()不就好了吗,问题就出在这。正常的json,就是那种标准的字典,键值对,值里面有引号进行转义什么的就ok了,但是百度返回的json不一样,key-value中,某些value它不正常,就不是json,如下:
在这里插入图片描述
怎么解决呢?具体问题具体分析。通过对整个数据的分析,把“ \’ ’”改成“ \\’ ”就好了。所以呢,我们还得引入json模块,为的就是数据解析替换后,还得把字符串转成json来操作

修改的部分的代码如下:
        resp=requests.get(url,headers=headers)                                                          
        # 通过手动浏览器访问确定是json数据了                                                                           
        # 最终的json对象或者说是字典对象                                                                             
        # 这里为什么不直接用  jsonData=resp.json()  ,是因为发现返回的数据居然不是正常的json字符串,有些地方是非法的,靠,真是服了                    
        jsonData={
   }                                                                                     
        # 先去拿到返回的json字符串                                                                                
        if resp.text:                                                                                   
            res=resp.text                                                                               
            # 把不对的地方改正确了                                                                                
            res=res.replace("\'","\\'")                                                                 
            try:                                                                                        
                # 将正确的json字符串转成json对象                                                                   
                jsonData=json.loads(res)                                                                
            except json.decoder.JSONDecodeError as e:                                                   
                #真出现异常了,咱就打印出来 看是哪的问题                                                                   
                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值