鱼C论坛

 找回密码
 立即注册
查看: 1793|回复: 9

[已解决]爬取肯德基门店的练习:如何把字符串转为JSON数据

[复制链接]
发表于 2020-7-28 10:22:00 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
以下是B站 某爬虫 视频教程 的作业。视频中老师布置一个作业,要爬取 肯德基门 门店的信息,他也具体讲解了怎么写爬虫,不过最后一步,我没听懂。

最后一步是:肯德基门店的信息的响应数据是text, 但是要存储为json形式,他说,要用 dumps  来转。我百度了dumps的用法。网上说:
json.dumps()函数是将字典转化为字符串
而json.loads 才是把字符串转为字典。

老师是不是说错了,还是我应该怎么做?

import request
import json
if __name__ == "__main__":
    url = 'http://www.kfc.com.cn/kfccda/index.aspx'
    headers = {
         'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'

    }
    keyword = input('enter a word:')
    data = {
        'op': keyword
    }
    response = requests.post(url=url, data=data, headers=headers)
    page_text = response.text     
    
最佳答案
2020-7-28 12:41:47
青松100 发表于 2020-7-28 12:32
谢谢版主审核,和各位大神的回答。我还有一个问题,就是这个代码我写好了,但是出错了。能不能麻烦你们或路 ...

因为 page_text 不是 JSON 类型呀,它是一串正常的网页代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-7-28 10:24:21 | 显示全部楼层
应该是用 json.loads()
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-7-28 10:25:56 | 显示全部楼层
是的,老师说错了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-28 12:32:09 | 显示全部楼层
谢谢版主审核,和各位大神的回答。我还有一个问题,就是这个代码我写好了,但是出错了。能不能麻烦你们或路过的大神有空的时候帮助看看啊?


小白零基础自学,希望别骂我太蠢。
import requests
import json
if __name__ == "__main__":
    url = 'http://www.kfc.com.cn/kfccda/index.aspx'
    headers = {
         'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'

    }
    keyword = input('enter a word:')
    data = {
        'op': keyword
    }
    response = requests.post(url=url, data=data, headers=headers)
    page_text = response.text  
    j_data=json.loads(page_text) 
    fp=open('./kfc.json','w',encoding='utf-8')
    json.dump(j_data, fp=fp, headers=headers)  
    print('over...')

我的VS CODE提示,什么第二行的第一列(char2) 
F:\python>C:/Users/Administrator.PC-20200712CPJN/AppData/Local/Programs/Python/Python38/python.exe f:/python/0019.py
enter a word:北京
Traceback (most recent call last):
  File "f:/python/0019.py", line 15, in <module>
    j_data=json.loads(page_text)
  File "C:\Users\Administrator.PC-20200712CPJN\AppData\Local\Programs\Python\Python38\lib\json\__init__.py", line 357, in loads
    return _default_decoder.decode(s)
  File "C:\Users\Administrator.PC-20200712CPJN\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\Administrator.PC-20200712CPJN\AppData\Local\Programs\Python\Python38\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 2 column 1 (char 2)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-28 12:41:47 | 显示全部楼层    本楼为最佳答案   
青松100 发表于 2020-7-28 12:32
谢谢版主审核,和各位大神的回答。我还有一个问题,就是这个代码我写好了,但是出错了。能不能麻烦你们或路 ...

因为 page_text 不是 JSON 类型呀,它是一串正常的网页代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2020-7-28 12:43:38 | 显示全部楼层
青松100 发表于 2020-7-28 12:32
谢谢版主审核,和各位大神的回答。我还有一个问题,就是这个代码我写好了,但是出错了。能不能麻烦你们或路 ...

这个页面返回的是html,不能直接转json.loads。
我觉得你还是买书吧,网上的视频好多误人子弟。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-28 15:18:12 | 显示全部楼层
谢谢各位大神的回复,很想都采纳,可是答案只有一个。

左右为难。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-24 18:21:50 | 显示全部楼层
楼主找到解决问题的方法了吗?我也是在搞这个,但完全蒙b了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-11-24 19:05:59 | 显示全部楼层
大马强 发表于 2020-11-24 18:21
楼主找到解决问题的方法了吗?我也是在搞这个,但完全蒙b了

啥意思?你是不是在爬肯德基?

利用requests模块进行数据爬取初级操作  ---百度这篇文章,找到这篇文章之后,再搜 肯德基

这块代码他放在文章的中间。

博主叫阿良

都好久了,我也忘记是咋写的了。以后回头再复习。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-11-24 23:02:34 | 显示全部楼层
青松100 发表于 2020-11-24 19:05
啥意思?你是不是在爬肯德基?

利用requests模块进行数据爬取初级操作  ---百度这篇文章,找到这 ...

感谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-17 05:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表