如何从下载PDFpubs.acs.org网站使用Python?

2024-10-06 07:10:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,我想用Python快速下载。我该怎么做?列表如下:

pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.fw001
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.pr001
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch001
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch002
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch003
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch004
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch005
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch006
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch007
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch008
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch009
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch010
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch011
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch012
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch013
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch014
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch015
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch016
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch017
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch018
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch019
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch020
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch021
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch022
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch023
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch024
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch025
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch026
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch027
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch028
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch029
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch030
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch031
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ch032
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ot001
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ot002
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ot003
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ot004
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ot005
pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.ix002

这对我来说有点不同。我习惯了页面上只有.pdf文件。不管怎样,我的大学是付费的,我想尽快下载全部内容。不是手动


我尝试了以下操作,但当我试图在本地目录中打开PDF时,我收到一条错误消息:

^{pr2}$

老实说,我不知道我在做什么。。。在


Tags: org列表pdfdoibkacspubsch001
1条回答
网友
1楼 · 发布于 2024-10-06 07:10:46

您可以对Python使用requests库:

import requests

session = requests.Session()

pdf_urls = [
    'pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.fw001',
    'pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.pr001'
    #and other files....
]


for pdf_url in pdf_urls:
    r = session.get('http://' + pdf_url)

    output_name = pdf_url.rpartition('.')[2] + '.pdf'
    output_file = open(output_name, 'wb')
    output_file.write(r.content)

这段代码将文件保存在Python脚本所在的同一目录中。在

编辑: 使用urllib2的代码

^{pr2}$

一些解释:


首先,http://pubs.acs.org/要求浏览器(在我们的例子中是python脚本)接受cookies。我们可以用CookieJar来完成:

cj = CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

在循环中,我们遍历url列表并下载文件:

response = opener.open('http://' + pdf_url)
content = response.read()

内容包含单个pdf文件。省省吧。首先,为录制生成一个文件名。rpartition返回一个三元素元组

  • 第一个元素是分隔符前面的字符串
  • 分离器本身
  • 分隔符后的字符串

比如说

'pubs.acs.org/doi/pdf/10.1021/bk-2012-1093.fw001'.rpartition('.')[2]
给我们fw001。我们将.pdf扩展名添加到文件名中。然后以二进制模式打开文件进行写入:

output_file = open(output_name, 'wb')

写一个从网站上获得的pdf文件

output_file.write(content)

相关问题 更多 >