簡體   English   中英

Python-從(非.pdf)網址下載pdf

[英]Python - Download pdf from (non .pdf) url

我正在嘗試從具有登錄名的網站下載大約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>

那么如何下載這些文件?

您可能會考慮使用Selenium,它可能更適合與站點交互(不是機械化不是一個很好的工具)。 關於如何完成此操作的文檔不錯(例如, 在此處此處 ):普遍接受的方法是調整Firefox,以便它保存文件而不是嘗試打開它們,然后訪問每個鏈接。

您可能還會發現,當您解析鏈接時,最終會發現完全不同的地方,具體取決於PDF的位置及其生成方式。 你也可以在滾動像的方法這一個鏈路提取。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM