色の世界

毎日勉強です。

美女の写真がいっぱい

Qiitaのこちらの記事を見て、この人天才かよ、と思って感銘を受けました。

qiita.com

 

 なので、とりあえず美女の写真収集のところを真似てみました。

プログラミング初心者が自分なりに書いたプログラムなので、ひどい箇所が多々あります。

誰も見ていないのをいいことに備忘録的に書いたプログラムを載せておきます。

import urllib.request
import bs4


iter = 1
resources = []
url = "http://misscolle.com"
request = urllib.request.urlopen('{}/versions'.format(url))
html = request.read()

soup = bs4.BeautifulSoup(html, "lxml")
column = soup.find_all('ul', class_='columns')

for ele in column:
a_tag = ele.find_all("a")

for href_str in a_tag:
link = href_str.attrs["href"]
if not link.startswith("http"):
link = '{}{}/'.format(url, link)
resources.append("{}photo".format(link))

for resource in resources:
request2 = urllib.request.urlopen(resource)
html2 = request2.read()
soup2 = bs4.BeautifulSoup(html2, "lxml")
column2 = soup2.find_all('li', class_='photo')

for li_tag in column2:
a_tag2 = li_tag.find_all("a")

for a in a_tag2:
href = a.attrs["href"]
photo = "{}{}".format(url, href)
path = href.split('?')[0].split('/')[-1].split('.')[-1]
urllib.request.urlretrieve(photo, "photos/{}.{}".format(iter, path))
iter += 1

for文を入れ子にしてしまうのはまずいのはわかっているんですが、私の知識では避けられませんでした。

あとから調べたら、mapってやつで代替できるみたいですね。

それとこれ実行したら、2652枚目の写真のところでエラーがでて止まってました。

エラー処理も必要のようですね。

一旦ここまで作って満足してしまいました。低レベルでごめんなさい。

必ず改善して、機械学習のところまでたどり着く!

 

一応今回のプログラムを通して、urllibとBeautifulSoupの使い方は一部理解できました。

終わり。