python学习-第四节练习

2016-06-30  本文已影响0人  碾香年年念

问题

爬取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)

总结

  1. 首先遇到的代理的问题,代码一开始只能爬取国内的网站,开了全局代理就可以下载目标网页的图片了
  2. 在给图片命名的时候,由于图片最后都是thumb,所以命名时只取到这部分的话会使图片被覆盖,若再往前取几位字符的话则会出现多一个路径,比如879/thumb.jpg,这样就会报错,因此我首先用replace把‘/’去掉,然后由于图片的名字有一些jpg/png后面还有?+数字的形式,因此我采用split将链接从‘?’处分开,这样就能统一命名了。
上一篇 下一篇

猜你喜欢

热点阅读