2016-02-28 54 views
-1

我試圖讓我的形象在線託管和我使用的python如何發送從蟒蛇的請求後響應,圖像

import requests 
url = 'http://imgup.net/' 
data = {'image[image][]':'http://www.webhost-resources.com/wp-content/uploads/2015/01/dedicated-hosting-server.jpg'} 
r = requests.post(url, files=data) 

我不能夠從獲得託管的圖片的反應網址響應 。 請幫忙!

+0

你得到了什麼錯誤? – Arman

+0

r.text給我同樣的html頁面,它不包含來自服務器端的post響應! –

+0

如果你嘗試donwload一個圖像使用[beautifulSoup](http://stackoverflow.com/questions/18497840/beautifulsoup-how-to-open-images-and-download-them) – Arman

回答

1
  1. requests.postfiles參數需要:的'name': file-like-objects(或{'name': ('filename', fileobj)}),用於多編碼上傳

字典。

  • 有更多的數據,你需要的不僅僅是要發送的文件,最重要的是「真實性令牌」。如果您查看頁面的源代碼,它會向您顯示所有其他參數,如<input type="hidden">標籤。

  • 上傳網址是http://imgup.net/upload,您可以從action屬性<form>中看到。


  • 所以,你需要做的是:

    1. 下載你要上傳的圖片(我把它叫做dhs.jpg)。

    2. 做主頁的GET請求,提取authenticity_token

    3. 一旦你的,與files=data=發送請求:

    url = "http://imgup.net/upload" 
    data = {'utf8': '&#x2713;', 'authenticity_token': '<put your scraped token here>', '_method': 'put'} 
    f = open("dhs.jpg", "rb") # open in binary mode 
    files = {'image[image][]': f} 
    r = requests.post(url, files=files, data=data) 
    f.close() 
    print(r.json()["image_link"] 
    

    最後一點:雖然我找不到反對這種任何規則行爲在他們的T & C中,真實性令牌的存在使得imgup似乎並不真的希望你自動執行此操作

    +0

    如果我的問題很清楚,你能否解決這個問題? –

    +0

    爲什麼這個答案downvoted? – themantalope

    +1

    我認爲沒有真實性標記。請糾正我,如果它是非法的,因爲代碼沒有任何身份驗證工作謝謝兄弟! –