在网页源码中,在img标签中首先会使用一个“伪属性”(通常使用src2,original......)去存放真正的图片链接而并非是直接存放在src属性中。当图片出现到页面的可视化区域中,会动态将伪属性替换成src属性,完成图片的加载。爬虫是使用伪属性解析。
class QiushiImagePipeline(ImagesPipeline): # 下载图片时加入referer请求头 def get_media_requests(self, item, info): for image_url in item[‘image_urls‘]: headers = {‘referer‘:item[‘referer‘]} yield Request(image_url, meta={‘item‘: item}, headers=headers) # 这里把item传过去,因为后面需要用item里面的书名和章节作为文件名 # 获取图片的下载结果, 控制台查看 def item_completed(self, results, item, info): image_paths = [x[‘path‘] for ok, x in results if ok] if not image_paths: raise DropItem("Item contains no images") return item # 修改文件的命名和路径 def file_path(self, request, response=None, info=None): item = request.meta[‘item‘] image_guid = request.url.split(‘/‘)[-1] filename = ‘./{}/{}‘.format(item[‘title‘], image_guid) return filename
原文:https://www.cnblogs.com/ajiling/p/14729609.html