【发布时间】:2013-05-30 16:54:08
【问题描述】:
这里是一个 python 初学者,试图让Twitter cursoring 在我的脚本中工作,这样我就可以迭代属于 Twitter 上一个列表的所有用户。这里的逻辑很简单。从这个 API 请求开始:
https://api.twitter.com/1/lists/members.json?slug=all-fox-news&owner_screen_name=foxnews&cursor=-1
然后有一个 for 循环将 cursor =-1 更改为 next_cursor_str 在解析的 JSON 中的任何内容。但是,我很难将 next_cursor_str 存储为字符串。有没有人有这方面的经验?下面是我的代码,工作正常,只是没有光标循环:
import urllib2
import json
import csv
from time import sleep
outfile_path='Out.csv'
writer = csv.writer(open(outfile_path, 'w'))
headers = ['users']
writer.writerow(headers)
url = urllib2.Request('https://api.twitter.com/1/lists/members.json?slug=all-fox-news&owner_screen_name=foxnews&cursor=-1')
parsed_json = json.load(urllib2.urlopen(url))
print parsed_json
for tweet in parsed_json['users']:
row = []
row.append(str(tweet['screen_name'].encode('utf-8')))
writer.writerow(row)
sleep(5)
根据下面的答案 parsed_json["next_cursor_str"] 正是我所需要的。我认为 while 循环在这里会很好,但它未能在 0 结束:
n = parsed_json["next_cursor_str"]
int(n)
while n is not 0:
url = urllib2.Request('https://api.twitter.com/1/lists/members.json?slug=all-fox-news&owner_screen_name=foxnews&cursor=' + str(n))
parsed_json = json.load(urllib2.urlopen(url))
print parsed_json
for tweet in parsed_json['users']:
row = []
row.append(str(tweet['screen_name'].encode('utf-8')))
writer.writerow(row)
n = parsed_json["next_cursor_str"]
【问题讨论】:
-
“遇到麻烦”是什么意思?代码有什么特别不起作用的地方?
-
不确定如何将 next_cursor_str 存储为字符串
-
您的代码中没有任何名为
next_cursor_str的变量...哦,您指的是API 中的字段。好的。 -
我不确定我的回答是否能解决问题。如果不是,也许您可以通过将其存储为字符串来更清楚地了解您的意思。
-
你的意思是让
n = int(n)-int(n)本身不做任何事情。您也必须在最后一行中包含int。但是为什么要打扰呢?为什么不直接使用next_cursor而不是next_cursor_str,后者已经是一个int?