1

我正在将 Python 与请求一起使用,并且正在尝试将数据发送到缩短链接的网站的表单。一旦我使用requests.post,我想将他们缩短的链接的链接存储在一个变量中。

我已经阅读了有关状态码的信息,但我不太清楚如何使用它们。这是输入表单的样子。

<form method="post" action="paste.php">
    <div class="row">
        <div class="12u">
            <input type="text" name="name" id="name" placeholder="Name of paste" />
        </div>
    </div>
    <div class="row">
        <div class="12u">
            <textarea name="paste" id="paste" placeholder="Paste contents"></textarea>
        </div>
    </div>
    <div class="row">
        <div class="12u">
            <a type="submit" class="button form-button-submit">Upload</a>
            <a href="#" class="button button-alt form-button-reset">Undo</a>
        </div>
    </div>
</form>

这是我到目前为止所拥有的。

def create_paste(url):
    title = 'title' # Define your title.
    paste = 'paste' # Define your paste content.

    try:
        durk = requests.post(url, data={'name': title, 'paste': paste})

        if durk.status_code == 302:
            print('Pasted!')
        else:
            print('Not pasted!')
    except:
        raise

我该怎么做呢?谢谢。

编辑:通过重新阅读请求文档解决了这个问题。如果我允许重定向并使用 r.url,我可以显示粘贴链接。

def derp():
    title = 'adsfjkl' # Define your title.
    paste = 'asdfasdhfasdflkjashdfkjasht' # Define your paste content.

    r = requests.post('http://website.com/paste.php', data={'name': title, 'paste': paste}, allow_redirects=True)

    if r.status_code == 200:
        print('Pasted! %s' % (r.url))
    else:
        print('Not pasted!')

    print r.url
4

1 回答 1

3

最简单的方法是确实使用 Requests.post,然后将此发布结果传递给beautifulsoup并解析结果。

例如:

import request
from bs4 import BeautifulSoup as BS

response = request.get('http://stackoverflow.com/') 
bs = BS(response.text)

//do some parsing using beautifulsoup to get the link
于 2013-11-01T19:46:24.633 回答