python学習-第四節練習

1219 ワード

問題
taylorswiftの写真を登ります。
コード
from bs4 import BeautifulSoup
import requests,urllib.request
import time

urls = ['http://weheartit.com/inspirations/taylorswift?page={}&before=206961150'.format(i) for i in range(1,2)]
folder_path = r'C:/Users/nancy/Desktop/name/'

def get_img(url):
    wb_data = requests.get(url)
    soup = BeautifulSoup(wb_data.text,'lxml')
    imgs = soup.select('div > div > div > div > div > a > img')
    time.sleep(2)

    download_links = []
    for img in imgs:
        img_link = img.get('src')
        download_links.append(img_link)

    for item in download_links:
        itemtext = item.replace('/', '')
        num = itemtext.split('?')[0]
        urllib.request.urlretrieve(item, folder_path + num[-20:])


for single_url in urls:
    get_img(single_url)

締め括りをつける
  • まず出会う代理の問題、コードは最初に国内のウェブサイトを登ることしかできなくて、全体の全体の代行をつけて目標のウェブページのピクチャーをダウンロードすることができました。
  • は画像に名前を付ける時、画像は最後までthumbであるため、名前を付ける時はこの部分だけを取ると画像が上書きされます。前に何人かの文字を取ると、879/thumb.jpgなど多くのパスがあります。これでエラーが発生します。だから、まずreplaceで‘/’を削除して、写真の名前にはjpg/pgの後にまだあります。数字の形ですので、私はスプリットで‘?’からリンクします。処分が解けると、名前が統一されます。