鱼C论坛

 找回密码
 立即注册
查看: 1899|回复: 3

json数据如何获取?

[复制链接]
发表于 2018-1-8 12:39:23 | 显示全部楼层 |阅读模式

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

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

x
想采集12306的余票信息,无奈卡在了获取json数据部分。
请问一下,应该如何获取json里面的余票信息?十分需要各位大神的帮助,谢谢。

https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_date=2018-01-08&leftTicketDTO.from_station=GZQ&leftTicketDTO.to_station=CSQ&purpose_codes=ADULT

上述网址是可以直接打开看到json文件信息的,不过通过下述代码后无法正确获取json信息。

  1. import requests
  2. import json
  3. url = "https://kyfw.12306.cn/otn/leftTicket/queryZ?leftTicketDTO.train_da\
  4.      te=2018-01-08&leftTicketDTO.from_station=GZQ&leftTicketDTO.to_stati\
  5.      on=CSQ&purpose_codes=ADULT"
  6. hds = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWeb\
  7. Kit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Safari/537.36"}
  8. r = requests.get(url, verify=False, headers=hds)
  9. jsondata = json.loads(r.text[:100])
  10. print(jsondata)
复制代码


报错如下:
  1. Traceback (most recent call last):
  2.   File "F:\Python\01_Python网络爬虫从入门到实践\try.py", line 1760, in <module>
  3.     jsondata = json.loads(r.text[:100])
  4.   File "C:\Python36\lib\json\__init__.py", line 354, in loads
  5.     return _default_decoder.decode(s)
  6.   File "C:\Python36\lib\json\decoder.py", line 339, in decode
  7.     obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  8.   File "C:\Python36\lib\json\decoder.py", line 357, in raw_decode
  9.     raise JSONDecodeError("Expecting value", s, err.value) from None
  10. json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-1-8 14:32:46 | 显示全部楼层
本帖最后由 紫诺 于 2018-1-8 14:38 编辑

你先 print r.content 看下获取到的数据和你浏览器访问得到的数据是不是一样的,先解决这个问题

附参考:
Header = {
    'Accept-Encoding': 'gzip, deflate',
    'Connection': 'close',
    'Accept-Language': 'zh-CN,zh;q=0.8',
    'Accept': 'text/*,application/*,image/*,*/*',
    'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:59.0) Gecko/20100101 Firefox/59.0',
    'Content-Type': 'text/xml'
}
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-1-8 14:49:25 | 显示全部楼层
紫诺 发表于 2018-1-8 14:32
你先 print r.content 看下获取到的数据和你浏览器访问得到的数据是不是一样的,先解决这个问题

附参考 ...

谢谢,我终于找到问题所在了,结果处在“\”,取出后就可以了。看来以后改用三引号会保险一点。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-8 14:52:00 | 显示全部楼层
payton24 发表于 2018-1-8 14:49
谢谢,我终于找到问题所在了,结果处在“\”,取出后就可以了。看来以后改用三引号会保险一点。

好吧,原来问题出现在这里,我一般URL直接一行,的确容易出问题
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-27 01:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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