【发布时间】:2013-06-06 14:08:06
【问题描述】:
我是 python 的初学者,从 reddit.com 提取一些数据 更准确地说,我正在尝试向 http:www.reddit.com/r/nba/.json 发送请求以获取页面的 JSON 内容,然后解析它以获取有关特定球队或球员的条目。
为了自动收集数据,我请求这样的页面:
import urllib2
FH = urllib2.urlopen("http://www.reddit.com/r/nba/.json")
rnba = FH.readlines()
rnba = str(rnba[0])
FH.close()
我也在脚本副本上提取这样的内容,以确保:
FH = requests.get("http://www.reddit.com/r/nba/.json",timeout=10)
rnba_json = FH.json()
FH.close()
但是,我没有获得手动转到时显示的完整数据 http://www.reddit.com/r/nba/.json 使用任何一种方法,特别是当我打电话时
print len(rnba_json['data']['children']) # prints 20-something child stories
但是当我这样做时,像这样加载复制粘贴的 JSON 字符串:
import json
import urllib2
fh = r"""{"kind": "Listing", "data": {"modhash": ..."""# long JSON string
r_nba = json.loads(fh) #loads the json string from the site into json object
print len(r_nba['data']['children']) #prints upwards of 100 stories
我得到了更多的故事链接。我知道 timeout 参数,但提供它并没有解决任何问题。
当我在浏览器中拉动页面时,我做错了什么或者我该怎么做才能获得所有呈现的内容?
【问题讨论】:
-
我两种方法都做了,
len(j['data']['children])得到了相同的结果:25 个故事 -
“两种”方式是指 Python 请求还是访问网站并复制粘贴?如果是这样,你的代码和我的不同吗?
-
确实,我什至使用了 wget 并得到了相同的结果。我的代码来自解释器:
x=urllib2.urlopen(dir).read();j=json.loads(x);len(j['data']['children']) >> 25 -
你确定
rnba = str(rnba[0])?编辑:刚刚测试过,它确实返回了一行 -
好吧,我不知道该说什么,首页肯定有超过25个故事链接,我复制粘贴时大约有100个(就像普通的www.reddit.com/ r/nba 你能从首页获取所有这 100 个故事吗?
标签: python urllib2 python-requests