0

これは、scribd.com の検索結果ドキュメントのダウンロードを自動化することが可能かどうか、可能であればその方法に関する一般的な質問です。

シナリオ:

私は Scribd アカウントを持っていて、必要なドキュメントを見つけました。通常、ダウンロード ボタンをクリックしてダウンロードを開始する必要があります。

これを自動化するためのアイデアはありますか? scribd api と python を使用して、自動クエリに基づいてドキュメント ID を自動的に抽出していますが、doc_id を取得したら、物理的に各ドキュメント ページに移動し、ダウンロード ボタンをクリックして、物理的な txt/pdf ファイルを取得する必要があります。このステップも自動化したい。

何か案は?

4

1 に答える 1

3

python-scribdドキュメントまたはscribdAPI リファレンスを見ると、ドキュメント ID または Web サイト URL を提供できるオブジェクトは、ダウンロード URL も提供できます。または、ドキュメント ID を既に持っている場合は、呼び出しgetてオブジェクトを取得し、ダウンロード URL を取得できます。

ほとんどの場合、次のDocumentメソッドを持つオブジェクトがあります。

get_download_url(自分、doc_type='オリジナル')

ドキュメントの静的バージョンをダウンロードするために使用できるリンクを返します。

だから、あなたがどこに電話していてもget_scribd_url、ただ電話してget_download_urlください。

次に、結果をダウンロードするために、Python にはurllib2(2.x) またはurllib.request(3.x) が標準ライブラリに組み込まれているrequestsか、代わりにまたは他のサードパーティ ライブラリを使用できます。

例としてすべてをまとめると:

# do all the stuff to set up the api_key, get a `User` object, etc.

def is_document_i_want(document):
    return document.author == "Me"

urls = [document.get_download_url() for document in user.all()
        if is_document_i_want(document)]

for url in urls:
    path = urllib.parse.urlparse(url).path
    name = os.path.basename(path)
    u = urllib.request.urlopen(url)
    with open(name, 'w') as f:
        f.write(u.read())
    print('Wrote {} as {}'.format(url, name))

user.findおそらく、代わりに のようなものを使用したいと思うでしょうuser.all。または、ドキュメント ID を取得するコードを既に作成していて、それを変更したくない場合はuser.get、それぞれで使用できます。

また、結果を事後フィルタリングしたい場合は、おそらく基本的なもの以外の属性を使用したいでしょう (または、それらをクエリに渡しただけです)。つまり、loadそれらにアクセスする前に各ドキュメントを呼び出す必要があります (そのため関数document.load()の先頭に追加しis_document_i_wantます)。しかし、実際には、複雑なことは何もありません。

于 2013-01-24T22:11:00.480 に答える