最近工作比较忙,好久没有写爬虫啦,今天恰巧和一个搞设计的朋友聊天,发现他有爬虫这方面的需要,一时技痒,就完成了这份爬虫代码!
今天爬取的网站是,著名的插画艺术家美籍台湾人士James Jean的作品网站,图片不是特别多,但是每一幅作品都充满诡异与华丽的融合。网站上还有他为Prada等品牌设计作品。
1.代码:
# coding:utf-8
import sys
import requests
from bs4 import BeautifulSoup
from pathlib import Path
def _create_url():
root_dir = _create_dir('./examples')
url = "https://www.jamesjean.com"
html = requests.get(url).text
soup = BeautifulSoup(html,'lxml')
aas = soup.select('li.gallery-collection > a')
for aa in aas:
href = aa.get("href")
http = url + href
dir_name = aa.text
download_dir = _create_dir(root_dir / dir_name)
get_data(http,download_dir)
def _create_dir(name):
"""
根据传入的目录名创建一个目录,这里用到了 python3 引入的 pathlib 库。
"""
directory = Path(name)
if not directory.exists():
directory.mkdir()
return directory
def get_data(url, save_dir):
headers = {
'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36'
}
html = requests.get(url,headers).text
soup = BeautifulSoup(html,'lxml')
imgs = soup.find_all(name = 'img', class_ = 'loading')
i = 1
for img in imgs:
img_url = img.get('data-src')
data = requests.get(img_url,headers)
photo_name = str(i)+".jpg"
save_path = save_dir / photo_name
fp = open(save_path,'wb')
fp.write(data.content)
fp.close()
i+=1
if __name__ == '__main__':
_create_url()
2.效果图:
3.代码解析:
登录网站可以看到作品都是根据年份等条件进行检索后显示的,那么首先要确定出检索不同年份作品的URl,根据不同的年份在进行爬取,并将爬取的结果按照年份分别建立文件夹进行存储,这里存储的位置的examples文件夹是和Python爬虫文件同一路径下的相对路径!代码比较简单,下面再贴上几幅作品,供大家欣赏。