requests.get 下载pdf
时间: 2023-10-25 16:02:50 浏览: 149
使用requests库的get方法下载pdf文件非常简单。首先,我们需要导入requests库:
import requests
接着,我们使用get方法发送HTTP GET请求,传入的参数是pdf文件的URL链接,如下所示:
url = "http://example.com/file.pdf"
response = requests.get(url)
这里的url是pdf文件的链接地址。然后,我们可以通过response对象的content属性获取pdf文件的二进制数据,如下所示:
pdf_data = response.content
现在,我们已经成功地将pdf文件的内容保存在了pdf_data变量中。接下来,我们可以将这些二进制数据保存到本地文件中,如下所示:
with open("file.pdf", "wb") as file:
file.write(pdf_data)
在这里,我们使用了Python的with语句来打开一个pdf文件,并以二进制写入模式("wb")将pdf数据写入文件中,文件名为file.pdf。
最后,我们可以使用requests.get方法下载pdf文件,并将其保存到本地文件中。注意,如果pdf文件很大,下载的过程可能需要一些时间。同时,我们还可以通过添加一些额外的参数,如认证、请求头等,来增强请求的功能和性能。
以上就是使用requests.get下载pdf文件的基本步骤和示例代码。希望能对您有所帮助!
相关问题
python requests.get()下载文件 存储的路径怎么设置
使用Python的requests库的get()方法可以下载文件,保存文件的路径可以通过设置文件名的方式来实现。比如获取网络文件的文件名为file.pdf,可以通过以下方式保存到本地路径:
```
import requests
url = "http://www.example.com/file.pdf"
filename = url.split("/")[-1]
response = requests.get(url)
with open("path/to/save/" + filename, "wb") as f:
f.write(response.content)
```
其中,url是下载文件的地址,filename通过将地址进行"/"分割,获取地址中的最后一个元素,即文件名(file.pdf),然后使用with open语句打开文件并以二进制模式写入response.content,这表示将网络响应的二进制内容写入到本地路径中。需要注意的是,如果需要保存到特定目录下,可以通过设置“path/to/save/”以及文件名的方式进行设置,其中,“path/to/save/”为保存文件的路径,可以根据需要进行更改。
files_dir = "/Users/hh/Desktop/python/fileshunan" def savefiles(): # 当前页码 pageno = driver.find_element(By.CSS_SELECTOR, "ul.pagination li.active button").text print("page", pageno) # 获取规划文件列表 filelist = driver.find_elements(By.CSS_SELECTOR, "div.card-body ul li") # 循环规划文件 for file in filelist: # 获取规划文件链接标签 a = file.find_element(By.TAG_NAME, "a") # 规划文件名称 filename = a.text # 规划文件地址 url = a.get_attribute("href") # 只保存纲要文件 outlines = file.find_elements(By.CSS_SELECTOR, "span.badge-warning") if len(outlines) > 0: # 获取规划文件后面可能存在的PDF徽标 pdfs = file.find_elements(By.CSS_SELECTOR, "span.badge-light") if len(pdfs) > 0: # 如果存在PDF徽标,则为PDF格式文件 url = url.replace("plan", "planpdf") print(filename, url) r = requests.get(url) with open(files_dir + filename + ".pdf", 'wb') as f: f.write(r.content) else: # 如果不存在PDF徽标,则为HTML格式文件 print(filename, url) r = requests.get(url) soup = BeautifulSoup(r.text, 'lxml') with open(files_dir + filename + ".html", 'wt', encoding="utf-8") as f: f.write(soup.select_one("#plancontent").prettify())
根据你提供的代码,你似乎想要下载规划文件并保存到指定的文件夹中。我注意到你使用了 Selenium 和 BeautifulSoup 库来解析网页内容。
首先,确保你已经导入了需要的库,如下所示:
```python
from selenium import webdriver
from selenium.webdriver.common.by import By
from bs4 import BeautifulSoup
import requests
```
然后,在 `savefiles()` 函数中,你可以使用以下代码来保存规划文件:
```python
def savefiles():
# 当前页码
pageno = driver.find_element(By.CSS_SELECTOR, "ul.pagination li.active button").text
print("page", pageno)
# 获取规划文件列表
filelist = driver.find_elements(By.CSS_SELECTOR, "div.card-body ul li")
# 循环规划文件
for file in filelist:
# 获取规划文件链接标签
a = file.find_element(By.TAG_NAME, "a")
# 规划文件名称
filename = a.text
# 规划文件地址
url = a.get_attribute("href")
# 只保存纲要文件
outlines = file.find_elements(By.CSS_SELECTOR, "span.badge-warning")
if len(outlines) > 0:
# 获取规划文件后面可能存在的PDF徽标
pdfs = file.find_elements(By.CSS_SELECTOR, "span.badge-light")
if len(pdfs) > 0:
# 如果存在PDF徽标,则为PDF格式文件
url = url.replace("plan", "planpdf")
print(filename, url)
r = requests.get(url)
with open(files_dir + filename + ".pdf", 'wb') as f:
f.write(r.content)
else:
# 如果不存在PDF徽标,则为HTML格式文件
print(filename, url)
r = requests.get(url)
soup = BeautifulSoup(r.text, 'lxml')
with open(files_dir + filename + ".html", 'wt', encoding="utf-8") as f:
f.write(soup.select_one("#plancontent").prettify())
```
在上述代码中,我们首先获取当前页码,并打印出来。然后,通过 `driver.find_elements()` 方法获取规划文件列表。
接下来,我们循环遍历每个规划文件,并获取文件的链接标签、文件名称和文件地址。
我们使用 `file.find_elements()` 方法检查是否有纲要文件的标记。如果有,我们进一步检查是否存在 PDF 徽标,以确定文件的格式。如果存在 PDF 徽标,我们将构建相应的 URL,并使用 `requests.get()` 方法下载该文件,并将内容保存到指定的文件夹中。
如果不存在 PDF 徽标,则说明文件为 HTML 格式。我们使用 `requests.get()` 方法下载该文件,并使用 BeautifulSoup 解析 HTML 内容。然后,我们将解析后的内容写入到指定的 HTML 文件中。
请确保你已经设置好了 `files_dir` 变量,它指定了保存文件的目录路径。
请注意,以上代码仅供参考,并需要根据你的实际页面结构和需求进行适当的修改。另外,记得导入所需的库。
如果你有任何进一步的问题,请随时提问。
阅读全文