马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 stonejianbu 于 2019-7-12 00:56 编辑
mm.jpg
听说新鱼油都喜欢爬虫贴,特别是那种不断换动作的动作片,嘻...(一脸邪恶) 上图为su ren系列,年轻或清纯....(眼神迷离)直接上代码。# -*- coding: utf-8 -*-
import scrapy
class Luxu8Spider(scrapy.Spider):
name = 'luxu8'
allowed_domains = ['www.259luxu8.com']
start_urls = ['https://www.259luxu8.com/']
def parse(self, response):
list_link = response.xpath('//ul[@id="menu-259luxu"]/li')[1:]
link_href_list = [(link.xpath('./a/@href').get(), link.xpath('./a/text()').get()) for link in list_link]
for link, name in link_href_list:
yield response.follow(link, callback=self.parse_list, meta={'name': name})
def parse_list(self, response):
article_list = response.xpath('//div[@id="post_list_box"]/article')
article_href_list = [article.xpath('./header[@class="entry-header"]/h2/a/@href').get() for article in article_list]
for link in article_href_list:
yield response.follow(link, callback=self.parse_detail, meta={'name': response.meta['name']})
# 获取下一页地址
next_url = response.xpath('//a[@title="下页"]/@href').get()
if next_url:
yield response.follow(next_url, callback=self.parse_list, meta={'name': response.meta['name']})
def parse_detail(self, response):
img_name = response.xpath('//p/img/@alt').get()
img_list = response.xpath('//p/img/@src').getall()
img_path_list = [('{}/{}/{}_{}'.format(self.name, response.meta['name'], img_name, i+1),
img_list[i]) for i in range(len(img_list))]
print('Downloading: {}'.format(img_name))
yield {'img_list': img_path_list}
以上代码基于scrapy框架,看起来较为简单清晰,其思路大概为:首先获取网站首页取分类页的链接,然后爬取分类的列表页,接着进入详情页获取番号图,不断地提取<下一页>以爬取整个网站。import scrapy
from scrapy.pipelines.images import ImagesPipeline
class MmSpiderPipeline(object):
def process_item(self, item, spider):
return item
class MyImagePipeline(ImagesPipeline):
def get_media_requests(self, item, info):
for name, image_url in item['img_list']:
yield scrapy.Request(image_url, meta={'image_name': name})
def file_path(self, request, response=None, info=None):
name = request.meta['image_name']
filename = '{}.jpg'.format(name)
return filename
对于爬取到的番号链接列表,可使用继承scrapy内置类ImagesPipeline以达到下载并修改将图片名命名为相应的番号的目的,使用其还需要设置下IMAGES_STORE='./mm',这里指的是图片下载到目录mm下。
以上网站有2500+番号图。标题25000+?哈,今天爬了三个网站,保存了25000+的番号图,但是由于首次发帖,不知道这样是否违规,但为了鱼油们的性福我还是铤而走险。各位鱼油可以自己把代码跑一遍,什么样mm都有(嘿~注意身体)。如果有鱼油对我另外的两个网站资源代码也感兴趣,可以联系下我邮箱,或者评论写邮箱地址,后面可考虑写个程序自动给你们发源码。如果有鱼油不重过程只重结果,只对25000+的番号图图有不轨,可私信我下,有空的话可以给你们发,太多人就不发了,所以还是建议你们自己跑程序,程序应该不会有什么问题,当然有问题可以评论下,鱼油互相帮助回答下!
mm_spider.zip
(13.5 KB, 下载次数: 21, 售价: 1 鱼币)
|