1

私は自分のサイトにページを作成しましたhttp://shedez.com/test.html このページは、ユーザーをサーバー上の jpg にリダイレクトします

Python スクリプトを使用して、このイメージをローカル ドライブにコピーしたいと考えています。Pythonスクリプトで最初にメインURLに移動してから、写真の宛先URLに移動する必要があります

そして画像をコピーします。現在のところ、宛先 URL はハードコーディングされていますが、将来的には動的になります。ジオコーディングを使用して IP 経由で都市を検索し、ユーザーをその都市からその日の写真にリダイレクトするためです。

== 現在のスクリプト ===

import  urllib2, os

req = urllib2.urlopen("http://shedez.com/test.html")

final_link = req.info()
print req.info()

def get_image(remote, local):   
    imgData = urllib2.urlopen(final_link).read()
    output = open(local,'wb')
    output.write(imgData)
    output.close()
    return local

fn = os.path.join(self.tmp, 'bells.jpg')
firstimg = get_image(final_link, fn)
4

4 に答える 4

3

ヘッダーのリダイレクトではないようです。これは URL の本文です -

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">\n<html>\n<head>\n<title>Your Page Title</title>\n<meta http-equiv="REFRESH" content="0;url=htt
p://2.bp.blogspot.com/-hF8PH92aYT0/TnBxwuDdcwI/AAAAAAAAHMo/71umGutZhBY/s1600/Professional%2BBusiness%2BCard%2BDesign%2B1.jpg"></HEAD>\n<BODY>\nOptional page t
ext here.\n</BODY>\n</HTML>

or を使用してコンテンツを簡単にフェッチし、urllibまたはを使用requestsして HTML を解析して、タグから画像の URL を取得できます。BeautifulSouplxmlmeta

于 2013-03-22T07:10:54.033 に答える
1

http-equivHTMLリダイレクトを使用しているようです。Python でリダイレクトを透過的に処理するには、代わりにサーバー側でHTTP 302応答ヘッダーを使用します。それ以外の場合は、HTML を解析して手動でリダイレクトに従うか、 mechanizeなどを使用する必要があります。

于 2013-03-22T07:09:26.917 に答える
0

デフォルトでは、urllib2 urlopen 関数は、リダイレクト 3XX HTTP ステータス コードに従います。しかし、あなたの場合、Bibhas が提案しているものを使用するための html ヘッダー ベースのリダイレクトを使用しています。

于 2013-03-22T07:24:31.710 に答える
0

答えが言及しているように:画像自体にリダイレクトするか、htmlからURLを解析してください。

前者のリダイレクトに関しては、nginx または HAproxy サーバー側を使用している場合はX-Accel-Redirect、画像の uri に を設定すると、適切に提供されます。詳細については、 http://wiki.nginx.org/X-accelを参照してください。

于 2013-03-22T07:15:33.777 に答える