思路
1、通过 requests 模块请求网页,获取到网页的源码,其中包含了作品集的 URL
2、通过 BeautifulSoup 提取到作品集的 URL ,返回为列表,使用 for 循环遍历作品集
3、遍历访问作品集时,通过 BeautifulSoup 提取到图片的 URL,进行名称格式化后,返回
4、保存图片的 URL 至本地磁盘
5、遍历多页作品集,使用多线程
嗯。。。思路大概是这个样子吧,新手入门- -
模块编写
1、抓取主页(start_app)
从网页源码中可以看出,其主要内容包含在class为 work-list-box 的这个div内,并且每个作品又是单独包含在 class为 card-box这个div内的,所以首先,通过 BeautifulSoup 生成 soup 对象后,使用 soup.find class=work-list-box 找到位于该 class 内的元素,再通过 find_all class= card-box 生成 作品集的一个列表,代码为:
def start_app(self):
print('[Message]正在抓取 - %s' % self.url)
try:
response = requests.get(self.url, headers=self.headers)
if response.status_code == 200:
soup = BeautifulSoup(response.text, 'lxml')
page_content = soup.find('div', class_="work-list-box")
card_box_list = page_content.find_all('div', class_="card-box")
else:
print('[Error]文档获取失败,状态为 - %s' % (self.url, response.status_code))
except Exception as e:
print(e)
2、抓取内容
1 中 获取到的作品集list,在该模块进行遍历,通过 BeautifulSoup 方法获取到作品集的 URL,标题,作者,其中,标题 + 作者 作为保存图片文件的路径,作品集的URL通过 requests 模块请求,再次抓取作品集内部的图片
def get_content(self, item):
title = item.find('a', class_="title-content")
avatar = item.find('div', class_="card-item")
if title is no