首页 > 编程问答 >使用python从网站自动下载pdf时出错

使用python从网站自动下载pdf时出错

时间:2024-07-30 15:47:27浏览次数:12  
标签:python

我想从一个名为 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.")

这段代码将:

  1. 使用 requests_html 库创建一个会话并获取指定的 URL。
  2. 使用 render() 方法渲染网页,包括执行 JavaScript。
  3. 在页面上找到包含 “.pdf” 的链接,这应该是 PDF 文件的链接。
  4. 如果找到链接,它将提取链接并下载 PDF 文件。

你需要使用实际的地址信息替换占位符。

请注意,此解决方案取决于网站的结构,如果网站发生变化,它可能会停止工作。

另请注意,刮取网站的信息可能违反其使用条款。请在抓取网站之前查看网站的使用条款。

标签:python
From: 78810397

相关文章

  • 避免字符串连接的嵌套循环的 Pythonic 方法
    我想找到所有5位数字的字符串,其中前三位数字在我的第一个列表中,第二个槽第四个数字在我的第二个列表中,第三到第五个数字在我的最后一个列表中:l0=["123","567","451"]l1=["234","239","881"]l2=["348","551","399"......
  • Python 环境配置(二)安装jupyter、matplotlib、numpy库
    Python环境配置(二)安装jupyter、matplotlib、numpy库一、numpypipinstallnumpy二、matplotlibpipinstallmatplotlib三、jupyter1、anaconda自带Jupyter2、pycharm插件只有Pycharm的Professional版才支持JupyterNotebook,请注意版本3、新建文件#%......
  • 如何使用 PIPE 并行运行 python 子进程?
    我正在使用inkscape将一堆SVG图像转换为PNG。单线程:importsubprocessimporttimeimportosinkscape_path=r'C:\ProgramFiles\Inkscape\bin\inkscape.com'steps=30filenames=[]processes=[]#t_start=time.process_time()t_start=time.time()f......
  • Python sqlite3 删除数据
    要从SQLite表中删除记录,你需要使用DELETEFROM语句。要删除特定的记录,你需要同时使用WHERE子句。要更新特定的记录,你需要同时使用WHERE子句。语法以下是SQLite中DELETE查询的语法- DELETEFROMtable_name[WHEREClause]PythonCopy例子假设我们使用以下查询创建了......
  • Python 环境配置(一)Python、Anaconda、Pycharm的安装
    Python环境配置(一)Python、Anaconda、Pycharm的安装本人之前已安装一次,此次为卸载之后的重新安装。。。一、Python1、下载下载官网:下载链接:DownloadPython|Python.org勾选添加到路径(环境变量)next如图所示之后点close关闭2、验证win+Rcmd:python退出ex......
  • Pycharm 设置 yaml 格式接口测试用例模板 (python+pytest+yaml)
    前言初次编写的伙伴们可能对yaml格式不太熟悉,自己写yaml用例的时候,总是格式对不齐啊记不住设定好的关键字啊等等等琐事是我们可以在pycharm上设置用例模块,通过快捷方式调用出对应的模块,达到高效写用例的目的。 pycharm操作集:1、File-Settings(快捷键Ctrl+Alt+S) 2、Live......
  • Python - Redirecting output of print to a file
    Theprintfunctioncanalsobeusedtowritetoafile.Theoutputofprint,thatisbydefault,senttothescreencanberedirectedtoanopenfile.Forthis,youhavetosupplythefileobjectasanargumentforthenamedparameterfile.Hereisanexa......
  • Python:添加到相对于当前运行脚本的 sys.path 的最佳方法
    我有一个充满脚本的目录(比如说project/bin)。我还有一个位于project/lib的库,并希望脚本自动加载它。这是我通常在每个脚本的顶部使用的:#!/usr/bin/pythonfromos.pathimportdirname,realpath,sep,pardirimportsyssys.path.append(dirname(realpath(_......
  • python身份证号码+姓名一致性核验、身份证号码真伪查询API集成
    身份证号码+姓名核验的方式,顾名思义是身份证二要素核验,一般情况下,身份证真伪查询需要上公安户籍系统查询,但此种方式仅适合个人查询,企业要想随时随地实现身份证实名认证的功能,便需要集成身份证实名认证接口功能。翔云人工智能开放平台提供身份证号实名认证接口,实时联网,上传身份证......
  • 如何将数字分配给返回的 python 数据列表,我可以调用这些数据来打印
    这里完全是菜鸟。我在网上搜索过,找不到我想要做的事情的答案。我的代码在这里:importbs4asbsimporturllib.requestsauce=urllib.request.urlopen('https://www.amazon.com/gp/rss/bestsellers/kitchen/289851/ref=zg_bs_289851_rsslink').read()soup=bs.Beautiful......