【问题标题】:POST request via requests (python) not returning data通过请求(python)的POST请求不返回数据
【发布时间】:2014-07-25 05:06:11
【问题描述】:

我还有一个关于帖子的问题。 这篇文章应该与使用这个问题'Using request.post to post multipart form data via python not working'在堆栈溢出中引用的帖子几乎相同,但由于某种原因我无法让它工作。该网站是http://www.camp.bicnirrh.res.in/predict/。我想将已经采用 FASTA 格式的文件发布到该网站,并使用 python 中的请求选择“SVM”选项。这是基于@NorthCat 之前给我的,这就像一个魅力:

import requests
import urllib
file={'file':(open('Bishop/newdenovo2.txt','r').read())}
url = 'http://www.camp.bicnirrh.res.in/predict/hii.php'
payload = {"algo[]":"svm"}
raw = urllib.urlencode(payload)
response = session.post(url, files=file, data=payload)
print(response.text)

由于它不起作用,我认为负载是问题所在。我一直在玩有效载荷,但我无法让其中任何一个工作。

payload = {'S1':str(data), 'filename':'', 'algo[]':'svm'} # where I tried just reading the file in, called 'data'
payload = {'svm':'svm'} # not actually in the headers, but I tried this too)
payload = {'S1': '', 'algo[]':'svm', 'B1': 'Submit'}

这些有效载荷都没有产生数据。

感谢任何帮助。非常感谢!

【问题讨论】:

  • open('Bishop/newdenovo2.txt','r') 替换open('Bishop/newdenovo2.txt','r').read() 有帮助吗?

标签: python post python-requests multipartform-data


【解决方案1】:

您需要将文件发布变量名称设置为“userfile”,即

file={'userfile':(open('Bishop/newdenovo2.txt','r').read())}

请注意read() 是不必要的,但它不会阻止文件上传成功。以下是一些适合您的代码:

import requests

session = requests.session()
response = session.post('http://www.camp.bicnirrh.res.in/predict/hii.php',
               files={'userfile': ('fasta.txt', open('fasta.txt'), 'text/plain')},
               data={'algo[]':'svm'})

response.text 包含 HTML 结果,将其保存到文件并在浏览器中查看,或使用 Beautiful Soup 之类的内容对其进行解析并提取结果。

在请求中,我为文件指定了“文本/纯文本”的 mime 类型。这不是必需的,但它可以作为文档并可能对接收服务器有所帮助。

我的fasta.txt文件的内容是:

>24.6jsd2.Tut 
GGTGTTGATCATGGCTCAGGACAAACGCTGGCGGCGTGCTTAATACATGCAAGTCGAACGGGCTACCTTCGGGTAGCTAGTGGCGGACGGGTGAGTAACACGTAGGTTTTCTGCCCAATAGTGGGGAATAACAGCTCGAAAGAGTTGCTAATACCGCATAAGCTCTCTTGCGTGGGCAGGAGAGGAAACCCCAGGAGCAATTCTGGGGGCTATAGGAGGAGCCTGCGGCGGATTAGCTAGATGGTGGGGTAAAGGCCTACCATGGCGACGATCCGTAGCTGGTCTGAGAGGACGGCCAGCCACACTGGGACTGAGACACGGCCCAGACTCCTACGGGAGGCAGCAGTAAGGAATATTCCACAATGGCCGAAAGCGTGATGGAGCGAAACCGCGTGCGGGAGGAAGCCTTTCGGGGTGTAAACCGCTTTTAGGGGAGATGAAACGCCACCGTAAGGTGGCTAAGACAGTACCCCCTGAATAAGCATCGGCTAACTACGTGCCAGCAGCCGCGGTAATACGTAGGATGCAAGCGTTGTCCGGATTTACTGGGCGTAAAGCGCGCGCAGGCGGCAGGTTAAGTAAGGTGTGAAATCTCCCTGCTCAACGGGGAGGGTGCACTCCAGACTGACCAGCTAGAGGACGGTAGAGGGTGGTGGAATTGCTGGTGTAGCGGTGAAATGCGTAGAGATCAGCAGGAACACCCGTGGCGAAGGCGGCCACCTGGGCCGTACCTGACGCTGAGGCGCGAAGGCTAGGGGAGCGAACGGGATTAGATACCCCGGTAGTCCTAGCAGTAAACGATGTCCACTAGGTGTGGGGGGTTGTTGACCCCTTCCGTGCCGAAGCCAACGCATTAAGTGGACCGCCTGGGGAGTACGGTCGCAAGACTAAAACTCAAAGGAATTGACGGGGACCCGCACAAGCAGCGGAGCGTGTGGTTTAATTCGATGCGACGCGAAGAACCTTACCTGGGCTTGACATGCTATCGCAACACCCTGAAAGGGGTGCCTCCTTCGGGACGGTAGCACAGATGCTGCATGGCTGTCGTCAGCTCGTGTCGTGAGATGTTGGGTTAAGTCCCGCAACGAGCGCAACCCCTGTCCTTAGTTGTATATCTAAGGAGACTGCCGGAGACAAACCGGAGGAAGGTGGGGATGACGTCAAGTCAGCATGGCTCTTACGTCCAGGGCTACACATACGCTACAATGGCCGTTACAGTGAGATGCCACACCGCGAGGTGGAGCAGATCTCCAAAGGCGGCCTCAGTTCAGATTGCACTCTGCAACCCGAGTGCATGAAGTCGGAGTTGCTAGTAACCGCGTGTCAGCATAGCGCGGTGAATATGTTCCCGGGTCTTGTACACACCGCCCGTCACGTCATGGGAGCCGGCAACACTTCGAGTCCGTGAGCTAACCCCCCCTTTCGAGGGTGTGGGAGGCAGCGGCCGAGGGTGGGGCTGGTGACTGGGACGAAGTCGTAACAAGGT

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-14
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 2023-01-21
    • 2012-06-23
    相关资源
    最近更新 更多