2011-10-30 7 views
1

私はredditスレッドからデータをスクラップするためのPython 2スクリプトを持っていますが、現在Python 3がインストールされています。WebページスクレーパーをPython 2からPython 3に変換する

私はPythonの知識はありませんでしたが、(初期の?)問題はurllib2であることを尋ねました。

これはpython 3に簡単に変換できますか、それともpython 2をインストールする方がいいですか?ここ

コード:

import urllib2 
import json 

# grab data 
raw_data = urllib2.urlopen('http://www.reddit.com/r/books/comments/cy3gy/what_books_are_you_reading_right_now/.json').read() 
thread_data = json.loads(raw_data)[1] 
toplevel_comments = thread_data['data']['children'] 

# extract books, upvotes and downvotes 
votes = dict() 
for book in toplevel_comments: 
    try: 
     book_name = book['data']['body'] 
     book_upvotes = book['data']['ups'] 
     book_downvotes = book['data']['downs'] 
     votes[book_name] = (book_upvotes, book_downvotes) 
    except KeyError: 
     break 

# create a dictionary sorted by upvotes 
votes_by_up = reversed(sorted(votes.items(), key = lambda t: t[1][0])) 

# print 
for item in votes_by_up: 
    book_name, votes = item 
    book_upvotes, book_downvotes = votes 
    print(book_name + ' -- ' + str(book_upvotes) + ' upvotes, ' + 
     str(book_downvotes) + ' downvotes') 

答えて

2

のPythonが付属しています2to3ユーティリティはあなたのための作業のほとんどを行います - 自動的にファイルを変換するために、-w引数を使用してファイルにそれを呼び出します。

その後、need to convertraw_dataから、文字列になります。あなたのjson.loads行の前にdecode権利を使用します。

raw_data = raw_data.decode('utf-8') 
+0

返信いただきありがとうございます。私はこれを達成できるはずです。 :) – Raerth

0

あなたはPythonのツール2to3を試みることができます。

関連する問題