Python 如何从Scribd.com自动下载.txt文件

Python 如何从Scribd.com自动下载.txt文件,python,download,scribd,Python,Download,Scribd,这是一个关于scribd.com搜索结果文档的自动下载是否可能以及如何实现的一般性问题 情景: 我有一个Scribd帐户,找到了我想要的文档。我通常需要点击下载按钮来开始下载 有什么自动化的想法吗?我正在使用scribd api和python根据自动查询自动提取文档id,但一旦获得文档id,我就必须实际转到每个文档页面并单击下载按钮以获取物理txt/pdf文件。我也想自动化这个步骤 有什么想法吗?查看或,任何可以为您提供文档ID或网站URL的对象也可以为您提供下载URL。或者,如果您已经有一个文

这是一个关于scribd.com搜索结果文档的自动下载是否可能以及如何实现的一般性问题

情景:

我有一个Scribd帐户,找到了我想要的文档。我通常需要点击下载按钮来开始下载

有什么自动化的想法吗?我正在使用scribd api和python根据自动查询自动提取文档id,但一旦获得文档id,我就必须实际转到每个文档页面并单击下载按钮以获取物理txt/pdf文件。我也想自动化这个步骤

有什么想法吗?

查看或,任何可以为您提供文档ID或网站URL的对象也可以为您提供下载URL。或者,如果您已经有一个文档ID,您可以调用
get
来获取一个可以为您提供下载URL的对象

最有可能的情况是,您有一个对象,该对象具有以下方法:

get\u download\u url
(self,doc\u type='original')

返回可用于下载文档静态版本的链接

所以,无论你在哪里调用
get\u scribd\u url
,只要调用
get\u download\u url

然后,为了下载结果,Python在标准库中内置了(2.x)或(3.x),或者您可以使用或任何其他第三方库

以这一切为例:

# 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的代码,并且不想对其进行更改,则可以对每个ID使用
user.get

如果要对结果进行后期筛选,可能需要使用基本属性之外的属性(或者您只需将它们传递给查询),这意味着您需要在访问每个文档之前调用
load
(因此在
is_document\u i_want
函数顶部添加
document.load()
)。但实际上,这里没有什么复杂的东西。

查看或,任何可以为您提供文档ID或网站URL的对象也可以为您提供下载URL。或者,如果您已经有一个文档ID,您可以调用
get
来获取一个可以为您提供下载URL的对象

最有可能的情况是,您有一个对象,该对象具有以下方法:

get\u download\u url
(self,doc\u type='original')

返回可用于下载文档静态版本的链接

所以,无论你在哪里调用
get\u scribd\u url
,只要调用
get\u download\u url

然后,为了下载结果,Python在标准库中内置了(2.x)或(3.x),或者您可以使用或任何其他第三方库

以这一切为例:

# 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的代码,并且不想对其进行更改,则可以对每个ID使用
user.get


如果要对结果进行后期筛选,可能需要使用基本属性之外的属性(或者您只需将它们传递给查询),这意味着您需要在访问每个文档之前调用
load
(因此在
is_document\u i_want
函数顶部添加
document.load()
)。但事实上,这里没有什么复杂的东西。

调查一下,同时,你如何“找到我想要的文档”?除非你有一个很好的“猜测TWhite想要什么”AI库,否则你需要能够从算法上描述它,然后才能实现自动化。如果你展示了使用scribd API提取文档ID的代码,那么将其更改为提取下载URL的代码应该很简单。但我不清楚在不立即知道问题答案的情况下,您首先会如何编写代码(除非您不知道如何查找文档,或者从Python中调用
help
),因此……也许您所做的与听起来不同?在这种情况下,您肯定需要向我们展示代码。我有使用API查找所需文档的代码。我会得到一个包含查询参数的所有文档的列表。然后,我想自动下载您帮助的结果。:)@TWhite:如果你展示了代码(理想情况下是一个精简的最小版本),而不是仅仅说你拥有它,它会很有帮助。我知道你有,例如,一个
文档
,而不必猜测你从哪里开始。但我很高兴你现在得到了答案。调查一下,同时,你如何“找到我想要的文件”?除非你有一个很好的“猜测TWhite想要什么”AI库,否则你需要能够从算法上描述它,然后才能实现自动化。如果你展示了使用scribd API提取文档ID的代码,那么将其更改为提取下载URL的代码应该很简单。但我不清楚在不立即知道问题答案的情况下,您首先会如何编写代码(除非您不知道如何查找文档,或者从Python中调用
help
),因此……也许您所做的与听起来不同?在这种情况下,您肯定需要向我们展示代码。我有使用API查找所需文档的代码。我会得到一个包含查询参数的所有文档的列表。然后,我想自动下载您帮助的结果。:)@TWhite:如果你展示了代码(理想情况下是一个精简的最小版本),而不是仅仅说你拥有它,它会很有帮助。我知道你有,例如,一个
文档
,而不必猜测你从哪里开始。但我很高兴你现在得到了答案。那是我错过的链接。谢谢。我找不到文档obj的下载url。该