当前位置: 首页 > 知识库问答 >
问题:

如何使用Python下载多个PDF文件?

卢志业
2023-03-14

我正在尝试下载https://occ.ca/our-publications

我的最终目标是解析PDF文件中的文本并定位某些关键字。

到目前为止,我已经能够抓取所有页面上PDF文件的链接。我已将这些链接保存到列表中。现在,我想浏览一下列表并用Python下载所有pdf文件。下载完文件后,我想对它们进行解析。

这是我迄今为止使用的代码:

import requests
from bs4 import BeautifulSoup
import lxml
import csv

# This code adds all PDF links into a list called 
#"publications".

publications=[]
for i in range(19):
    response=requests.get('https://occ.ca/our- 
   publications/page/{}/'.format(i), headers={'User- 
    Agent': 'Mozilla'})

    if response.status_code == 200:
        soup = BeautifulSoup(response.text, 'lxml')
        pdfs = soup.findAll('div', {"class": 
       "publicationoverlay"})
        links = [pdf.find('a').attrs['href'] for pdf in pdfs]
    publications.append(links)
import urllib.request
for x in publications:
urllib.request.urlretrieve(x,'Publication_{}'.format(range(213)))

这是我运行代码时遇到的错误。

回溯(最近的最后一次调用):urllib中的文件“C:\Users\plumm\AppData\Local\Programs\Python\Python37\m.py”,第23行。要求urlretrieve(x,'Publication\uu{}.pdf'。格式(范围(213)))文件“C:\Users\plumm\AppData\Local\Programs\Python\Python37\lib\urllib\request.py”,第247行,在urlretrieve with contextlib中。在urlopen return opener中,以fp:File“C:\Users\plumm\AppData\Local\Programs\Python\Python37\lib\urllib\request.py”的形式关闭(urlopen(url,data)),第222行。打开(url,数据,超时)文件“C:\Users\plumm\AppData\Local\Programs\Python\Python37\lib\urllib\request.py”,第531行,在open response=meth(req,response)文件“C:\Users\plumm\AppData\Local\Programs\Python\Python37\lib\urllib\request.py”中的http响应“http”,请求,响应,代码,消息,hdrs”文件“C:\Users\plumm\AppData\Local\Programs\Python\Python37\lib\urllib\request.py”中的第641行,第569行,返回self时出错_call\u chain result=func(*args)文件“C:\Users\plumm\AppData\Local\Programs\Python\Python37\lib\urllib\request.py”中的第503行,http\u error\u default raise HTTPError(req.full\u url,code,msg,hdrs,fp)urllib中的C:\Users\plumm\AppData\Local\Programs\Python37\lib\urllib\request.py。错误HTTPError:HTTP错误403:禁止

共有2个答案

杜俊风
2023-03-14

你能告诉我错误所在的行号吗?

高飞翮
2023-03-14

请尝试:

import requests
from bs4 import BeautifulSoup
import lxml
import csv

# This code adds all PDF links into a list called 
#"publications".

publications=[]
for i in range(19):
    response=requests.get('https://occ.ca/our- 
   publications/page/{}/'.format(i), headers={'User- 
    Agent': 'Mozilla'})

    if response.status_code == 200:
        soup = BeautifulSoup(response.text, 'lxml')
        pdfs = soup.findAll('div', {"class": 
       "publicationoverlay"})
        links = [pdf.find('a').attrs['href'] for pdf in pdfs]
    publications.extend(links)

for cntr, link in enumerate(publications):
    print("try to get link", link)
    rslt = requests.get(link)
    print("Got", rslt)
    fname = "temporarypdf_%d.pdf" % cntr
    with open("temporarypdf_%d.pdf" % cntr, "wb") as fout:
        fout.write(rslt.raw.read())
    print("saved pdf data into ", fname)
    # Call here the code that reads and parses the pdf.
 类似资料:
  • 我正在寻找一种在python中下载pdf文件的方法,我看到了关于推荐urllib模块的其他问题的答案。我试图用它下载一个pdf文件,但是当我试图打开下载的文件时,一条消息显示该文件无法打开。 错误消息 这是我使用的代码- 我做错了什么?此外,该文件会自动保存到python文件所在的目录中。如何更改它保存到的位置? 编辑-我再次尝试使用示例pdf的链接,http://unec.edu.az/appl

  • 问题内容: 我正在尝试使用selenium从网站下载pdf文件,但我能够打开文件,但无法使用代码自动下载。 码: 请提出建议。先感谢您 问题答案: 以上问题现已解决

  • 我正在编写一个python脚本,它将根据URL中给定的格式在本地保存pdf文件。例如。 我正在通过python脚本打开此URL: url包含大量图像和文本。一旦这个URL被打开,我想用python脚本以pdf格式保存一个文件。 这是我到目前为止所做的。 代码1: 代码2: 在上面的代码我得到: urllib2.HTTP错误401:未授权 如果使用代码2,如何传递授权详细信息?

  • 我正在尝试使用Spring Boot RestController下载多个pdf文件。但是由于某种原因,只下载了第一个文件。程序没有抛出任何错误。不确定是什么问题。这需要多部分吗?

  • 我正在使用selenium webdriver自动下载几个PDF文件。我得到PDF预览窗口(见下文),现在我想下载文件。我如何使用谷歌Chrome作为浏览器来实现这一点?

  • 我无法找到正确的方法来实现我的目标,即下载带有java selenium脚本的pdf。