【发布时间】:2014-08-23 08:33:20
【问题描述】:
我正在尝试从网站获取标题,将其编码为 JSON 以将其写入文件。 我尝试了两种不同的方法,但都没有成功。
首先使用 urllib2 和 json
import urllib2
import json
host = ("https://www.python.org/")
header = urllib2.urlopen(host).info()
json_header = json.dumps(header)
print json_header
这样我得到错误:
类型错误:不是 JSON可序列化
所以我尝试通过将对象转换为字符串来绕过这个问题 -> json_header = str(header) 这样我可以 json_header = json.dumps(header) 但输出很奇怪:
“日期:格林威治标准时间 2014 年 7 月 2 日星期三 13:33:37\r\n服务器:nginx\r\n内容类型: 文本/html; charset=utf-8\r\nX-Frame-选项: SAMEORIGIN\r\nContent-Length: 45682\r\nAccept-Ranges: bytes\r\nVia: 1.1 清漆\r\n年龄: 1263\r\nX-Served-By: cache-fra1220-FRA\r\nX-Cache: HIT\r\nX-Cache-Hits: 2\r\nVary: Cookie\r\nStrict -运输安全: 最大年龄=63072000; includeSubDomains\r\n连接:关闭\r\n"
第二个请求
import requests
r = requests.get(“https://www.python.org/”)
rh = r.headers
print rh
{'content-length': '45682', 'via': '1.1 varnish', 'x-cache': 'HIT', “接受范围”:“字节”,“严格传输安全”: '最大年龄=63072000; includeSubDomains', 'vary': 'Cookie', 'server': 'nginx','x-served-by':'cache-fra1226-FRA','x-cache-hits':'14', “日期”:“格林威治标准时间 2014 年 7 月 2 日星期三 13:39:33”,“x-frame-options”: 'SAMEORIGIN', '内容类型': 'text/html;字符集=utf-8','年龄': '1619'}
通过这种方式,输出更像 JSON,但仍然不正常(请参阅“”而不是“”和其他东西,如 = 和 ;)。 显然有些事情(或很多)我做得不对。 我试图阅读模块的文档,但我不明白如何解决这个问题。 感谢您的帮助。
【问题讨论】:
标签: python json python-2.7 urllib2 python-requests