【问题标题】:Python - Download pdf from (non .pdf) urlPython - 从(非 .pdf)网址下载 pdf
【发布时间】:2016-01-03 20:01:45
【问题描述】:

我正在尝试从具有登录名的站点下载大约 20 个左右的 pdf。这是我到目前为止所拥有的,但它无法下载任何有效的 pdf(即它们都已损坏)。我也是python新手。

import mechanize
import urllib2

def download_file(download_url):
    response = urllib2.urlopen(download_url)
    print response.geturl() 
    print response.read()
    file = open("document.pdf", 'wb')
    file.write(response.read())
    file.close()

brwser = mechanize.Browser()
brwser.addheaders = [('User-agent', 'Firefox')]
response = brwser.open(url)

brwser.select_form(nr = 0)
brwser.form['UserName'] = 'username'
brwser.form['Password'] = 'password'
nextpage = brwser.submit()

# Navigate to the page I want

for link in brwser.links():
    if link.text == 'Some pdf':
        request = brwser.follow_link(link)
        download_file(link.url)

我不确定该尝试什么。 pdf的网址是这样的

https://example.com/something/source2.aspx?id=e9a9bfdc-7d97-e411-9e03-76439cf4d30e

还有response.read()如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><title>
Source
</title>
<script type='text/javascript'>
   window.onload = function () {
       var url = window.location.href.replace('source.aspx?', 'source2.aspx?');
       window.location = url;
   };
</script>
</head>
<body>
<div style='position:fixed; height:100%; width:100%; overflow:hidden; top:100px; left:100px;'>Loading, please wait.</div>
</body>
</html>

那么我该如何下载这些文件呢?

【问题讨论】:

    标签: python asp.net pdf


    【解决方案1】:

    您可能会考虑使用 Selenium,它可能更适合与网站交互(并不是说 mechanize 不是一个出色的工具)。有关于如何完成此操作的不错的文档(例如 herehere):普遍接受的方法是调整 Firefox,使其保存文件而不是尝试打开它们,然后访问每个链接。

    您可能还会发现,当您解析链接时,最终会出现完全不同的地方,具体取决于 PDF 的位置和生成方式。您还可以采用this one 之类的方法进行链接提取。

    【讨论】:

    • 我会尽快尝试一下。谢谢
    猜你喜欢
    • 2016-08-10
    • 2021-09-17
    • 2020-10-10
    • 2020-12-31
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    相关资源
    最近更新 更多