问题
爬取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/png后面还有?+数字的形式,因此我采用split将链接从‘?’处分开,这样就能统一命名了。