Python2.7-使用Python向https://www.aconvert.com/pdf/发出GET和POST请求

时间:2018-06-21 00:37:00

标签: python-2.7 post get python-requests pdf-conversion

晚上好

我一直在研究,以了解使用请求模块进行GET和POST请求的工作方式。过去,我曾提出过.get和.post请求,但对我来说,它仍然是一个全新的概念(以及网络抓取)。我一直在尝试使用以下链接:https://www.aconvert.com/pdf/上传PDF文档,并使用Python 2.7将其转换为HTML文档,但是没有运气。我似乎无法获得正确的参数。该网站还具有用于发出请求的API(在https://www.aconvert.com/api.html中进行了描述),但我不太了解它是如何工作的。我已经尝试了几件事。我最后一次尝试类似于以下代码:

    import requests

    pdf_file = r"PATH_TO_PDF.pdf"
    session_requests = requests.session()
    data = {'file': pdf_file, 'targetformat':'HTML'}
    #r = session_requests.get('https://www.aconvert.com/pdf/')
    out = session_requests.post('https://www.aconvert.com/pdf/', data)
    print out.text

输出仅显示该站点的HTML源代码内容。 通过输入PDF文件和目标格式手动进行转换,将在显示区域提供HTML输出。单击后,将提供结果(例如:https://s2.aconvert.com/convert/p3r68-cdx67/cbzdr-c6wcd.html)。如果通过网站的API部分执行相同的操作,它将快速显示HTML链接和SUCCESS(作为字典返回)。

任何例子都将不胜感激,它演示了pdf文件的上传,以及对结果HTML的提取以及简短说明,以便我可以更好地理解它们的工作原理。

如果需要进一步说明,请告诉我。

谢谢!

编辑:我仍在尝试获取结果。取得进展,但不好。万一有人可以帮助,我现在有以下代码:

import requests
pdf_file = r'PATH_TO_PDF'
session_requests = requests.session()
files = {'file': open(pdf_file, 'rb')}
payload = {'targetformat': 'HTML', 'ocrlan': '0', 'filelocation':'local'}
return_out = session_requests.post('https://s2.aconvert.com/convert/convert-batch-win.php', files = files, data=payload)
print return_out.text

我至少从网站上获得了不同的错误响应。打印: {“结果”:“ 3-pdf-HTML--local-2”,“状态”:“错误”}。

不知道我现在到底在做什么错。我检查了源代码,并使用工具监视了实时HTTP流量。我相信我有标题,如果需要的话,有效负载信息页面。

1 个答案:

答案 0 :(得分:0)

找出解决方案,以防有人遇到类似问题。我不知道.post中可能过去的所有不同参数以及它们如何工作。例如files =,data =,params =,headers =,detting重定向为true等。经过一番尝试后,我发现了这一点。我的代码现在发布到网站(pdf),并将pdf转换为任何选定的文件类型,例如html,doc,docx,csv等。这一切的优点在于该站点还能够在pdf中显示隐藏的超链接。

import requests
session_request = requests.session()
pdf_file = r'PATH_TO_PDF_FILE'
files = {'file': open(pdf_file, 'rb')}
data = {'targetformat': 'html'}
return_post = session_request.post('https://s2.aconvert.com/convert/api-win.php', files = files, data = data)
return_get = session_request.get(str(return_post.text).split('"')[3])
print return_get.text