我想从一个名为 epadossier.nl 的网站自动批量下载 pdf 我用谷歌搜索了这个并找到了一段代码并修复了一个小错误。所以现在我得到了这个
`
import requests
url = "https://www.epadossier.nl/adres/plaats/straat/num"
response = requests.get(url)
if response.status_code == 200:
with open("mijn straat en mijn huisnummer, mijn postcode plaats (2024-7-26).pdf", "wb") as file:
file.write(response.content)
print("File downloaded successfully!")
else:
print("Failed to download the file.")
`
我得到了地图和量角器(隐藏在一个小按钮中)。 该脚本的当前结果是带有 html 代码的 pdf 希望我能得到一些想法,这是最好的前进方向
我希望有一个带有地图量角器的pdf文件 没有街景
问题在于你正在尝试直接下载网页本身,而不是网页提供的实际 PDF 文件。该网站似乎不会直接链接到 PDF 文件,而是使用 JavaScript 来动态加载和显示它。
为了解决这个问题,你需要使用一个可以渲染网页并与 JavaScript 交互的工具。下面是如何使用
requests_html
库做到这一点:
from requests_html import HTMLSession
session = HTMLSession()
url = "https://www.epadossier.nl/adres/plaats/straat/num" # 用实际的地址替换
response = session.get(url)
# 这将渲染 JavaScript 并加载所有内容
response.html.render()
# 找到包含地图和量角器的 PDF 的链接
pdf_link = response.html.find('a[href*=".pdf"]', first=True)
if pdf_link:
pdf_url = pdf_link.attrs['href']
pdf_response = requests.get(pdf_url)
if pdf_response.status_code == 200:
filename = f"epadossier_{plaats}_{straat}_{num}.pdf" # 使用提取的信息创建文件名
with open(filename, "wb") as file:
file.write(pdf_response.content)
print(f"File downloaded successfully as {filename}!")
else:
print("Failed to download the PDF file.")
else:
print("No PDF link found on the page.")
这段代码将:
-
使用
requests_html
库创建一个会话并获取指定的 URL。 -
使用
render()
方法渲染网页,包括执行 JavaScript。 - 在页面上找到包含 “.pdf” 的链接,这应该是 PDF 文件的链接。
- 如果找到链接,它将提取链接并下载 PDF 文件。
你需要使用实际的地址信息替换占位符。
请注意,此解决方案取决于网站的结构,如果网站发生变化,它可能会停止工作。
另请注意,刮取网站的信息可能违反其使用条款。请在抓取网站之前查看网站的使用条款。
标签:python From: 78810397