2017-01-27 7 views
0

私はPythonを初めて使用しています。私は、特定のWebサイトに行き、そのサイトの異なる場所に複数の.gifイメージをダウンロードするスクリプトを作成しようとしています。誰もが正しい方向に私を助けることができます。これは私が作ろうとした最初のものです。私のPythonスクリプトに問題があります

これまでのところ私はこれを得ています。

from http:// import http://folkworm.ceri.memphis.edu/heli/heli_bb_ag/ as bs 
import urlparse 
from urllib2 import urlopen 
from urllib import urlretrieve 
import os 
import sys 

def main(url, out_folder="C:\Users\jerry\Desktop\Heli/"): 
"""Downloads all the images at 'url' to /test/""" 
http://folkworm.ceri.memphis.edu/heli/heli_bb_ag/ = bs(urlopen(url)) 
parsed = list(urlparse.urlparse(url)) 

for image in   http://folkworm.ceri.memphis.edu/heli/heli_bb_ag/.findAll("gif"): 
    print "gif: %(src)s" % image 
    filename = gif["src"].split("/")[-1] 
    parsed[2] = gif["src"] 
    outpath = os.path.join(out_folder, filename) 
    if gif["src"].lower().startswith("http"): 
     urlretrieve(gif["src"], outpath) 
    else: 
     urlretrieve(urlparse.urlunparse(parsed), outpath) 

def _usage(): 
print "usage: python dumpimages.py  http:folkworm.ceri.memphis.edu/heli/heli_bb_ag/ [outpath]" 

if __name__ == "__main__": 
url = sys.argv[-1] 
out_folder = "/test/" 
if not url.lower().startswith("http"): 
    out_folder = sys.argv[-1] 
    url = sys.argv[-2] 
    if not url.lower().startswith("http"): 
     _usage() 
     sys.exit(-1) 
main(url, out_folder) 
+0

投稿したコードに問題がありますか? – csmckelvey

+0

あなたの質問がありますか?これはあまりにも広すぎます。 – Carcigenicate

+0

[こちらを読む](http://stackoverflow.com/help/mcve)私たちはあなたがコードで苦労していることを正確に伝えることはできません。 – Fruitspunchsamurai

答えて

1

ここに基本的な考え方があります。

>>> import requests 
>>> from bs4 import BeautifulSoup 
>>> item = requests.get('http://folkworm.ceri.memphis.edu/heli/heli_bb_ag/') 
>>> page = item.text 
>>> soup = BeautifulSoup(page, 'lxml') 
>>> links = soup.findAll('a') 
>>> for link in links: 
...  if '.gif' in link.attrs['href']: 
...   print (link.attrs['href']) 
...   break 
...  
CCAR_HHZ_AG_00.2017012700.gif?v=1485534942 

ブレーク文は、それはGIF年代の名のすべてを印刷しないように、単にスクリプトを中断することがあります。次のステップは、このループにコードを追加して、requests.getに記載されているURLを各gifの名前に連結し、それに対してrequests.getを実行することです。今度はimage = item.contentを使ってイメージをバイト単位で取得しますが、これを任意のファイルに書き込むことができます。

EDIT:Fleshed out。各出力ファイルに対して1つのファイル名を指定する必要があります。

>>> import requests 
>>> from bs4 import BeautifulSoup 
>>> URL = 'http://folkworm.ceri.memphis.edu/heli/heli_bb_ag/' 
>>> item = requests.get(URL) 
>>> page = item.text 
>>> soup = BeautifulSoup(page, 'lxml') 
>>> links = soup.findAll('a') 
>>> for link in links: 
...  if '.gif' in link.attrs['href']: 
...   print (link.attrs['href']) 
...   pic = requests.get(URL + link.attrs['href']) 
...   image = pic.content 
...   open('pic.gif', 'wb').write(image) 
...   break 
...  
CCAR_HHZ_AG_00.2017012700.gif?v=1485535857 
100846 
関連する問題