如何使用 python requests 库从网络下载 PDF 文件

Kun*_*uni 6 python download python-requests

尝试使用请求模块从网站下载一些 pdf 文件,但我不断收到下面列出的错误。我看到了几篇文章,他们提到使用response.contentpdf 文件而不是response.text,但它仍然产生错误。不知道如何解决这个问题。

示例链接:https://corporate.exxonmobil.com/-/media/Global/Files/worldwide-giving/2018-Worldwide-Giving-Report.pdf

def scrape_website(link):
        
    try:
        print("getting content")
        cert = requests.certs.where()
        page = requests.get(link, verify=cert, headers={"User-Agent": "Mozilla/5.0 (X11; CrOS x86_64 12871.102.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.141 Safari/537.36"})
        
        print(page)
        if ".pdf" in link:
            print("the content is a pdf file. downloading..")
     

            return page.content
        
        return page.text

    except Exception as x:
        print(x)
        return ''

statement_page = scrape_website(link)


with open(filepath, 'w+', encoding="utf-8") as f: 
        print("writing page")
        f.write(statement_page)
        f.close()


    <ipython-input-42-1e4771d32073> in save_html_page(page, path, filename)
     13         with open(filepath, 'w+', encoding="utf-8") as f:
     14             print("writing page")
---> 15             f.write(page)
     16             f.close()
     17 

TypeError: write() argument must be str, not bytes
Run Code Online (Sandbox Code Playgroud)

小智 5

有时我也需要以编程方式下载东西。我只是用这个:

import requests

response = requests.get("https://link_to_thing.pdf")
file = open("myfile.pdf", "wb")
file.write(response.content)
file.close()
Run Code Online (Sandbox Code Playgroud)

您还可以使用该os包下载wget

import os

url = 'https://link_to_pdf.pdf'
name = 'myfile.pdf'

os.system('wget {} -O {}'.format(url,name))
Run Code Online (Sandbox Code Playgroud)