最近因为项目需要,需要爬取一些头像图片,爬取的网址是https://www.woyaogexing.com/touxiang/,这次爬虫没有使用任何框架,使用Python的requests库请求网址,使用pyquery解析网页。网页的结构比较简单,这里就不详细说了,刚开始时,由于下载速度过快,下载一会就出现异常而中断了,后来我就每下载一张后就暂停几秒。晚上回去前,把爬虫脚本一直运行着,以为第二天早上来应该要下载几千张图片了,结果并不是,下载了100多张后程序就发送异常而终止了。后来我就想要是不中断就好了,异常处理就派上用场了。于是我改写了爬虫程序,将可能出现异常的语句均添加了异常处理,这样爬虫程序就可以一直运行下去了。由于每次下载过后都会延迟一段时间,我就想到了多线程,但是由于对python的多线程不太熟悉,所有就改用了多进程。将脚本同时运行了8次,这样下来一分钟就可以下载50多张图片了,一个晚上几万张图片妥妥的了。下面是使用到的爬虫脚本:
# -*- coding: utf-8 -*-
import random
import time
from PIL import Image
import requests
from pyquery import PyQuery as pq
class all_in_one:
def __init__(self):
self.image_name = 1
self.image_suffix = '.jpeg'
self.has_download_img = set()