我正在尝试抓取并保存在您单击URL后自动开始下载的pdf文件,例如:https://ec.europa.eu/research/participants/documents/downloadPublic?documentIds=080166e5b0a3b62d&appId=PPGMS
我一直在尝试使用urllib,但没有成功。
答案 0 :(得分:0)
您尝试过吗?
String str="already data exists = [ abc,xyz,123 ]";
String replacedStr = str.replaceAll("Already Po Exits =", "");
String replacedStr1 = replacedStr.replaceAll("\\[", "");
答案 1 :(得分:0)
鉴于下载是由javascript启动的,最通用的解决方案是使用实际执行javascript的浏览器。
在一般情况下,带有无头PhantomJS的硒驱动程序应该可以解决问题。
在这种情况下(对于此页面),执行下载的代码非常简单:
<script type="text/javascript">
$('document').ready(function(){
window.location='https://ec.europa.eu/research/participants/documents/downloadPublic/NXBvSk9oSlVwSFhueUcxNlJDUnNOSGVnOEpNWkVvWDlveDFoalRUb3E2VC8yVHlIU3hYMFVBPT0=/attachment/VFEyQTQ4M3ptUWNRa2R4dEZ6MkU3endWb2dWSDJHNTM=';
});
</script>
您可以先下载页面,解析以window.location
开头的url,然后下载它指向的文件(只需确保您包括html页面返回的cookie)。这会很脆弱,因为对该页面的实现进行的任何更改都可能破坏它。
这是使用requests的方法:
import re
import requests
s = requests.Session()
response = s.get('https://ec.europa.eu/research/participants/documents/downloadPublic?documentIds=080166e5b0a3b62d&appId=PPGMS')
url_pattern = re.compile("window.location='(?P<url>.*)';")
html = response.text
match_result = url_pattern.search(html)
url = match_result.group('url')
content_response = s.get(url)
file_content = content_response.content
with open('/tmp/file.pdf', 'wb') as f:
f.write(file_content)