基于scrapy框架爬取某某某网站,25000+番号图
本帖最后由 stonejianbu 于 2019-7-12 00:56 编辑听说新鱼油都喜欢爬虫贴,特别是那种不断换动作的动作片,嘻...(一脸邪恶) 上图为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')
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 = /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) 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+的番号图图有不轨,可私信我下,有空的话可以给你们发,太多人就不发了,所以还是建议你们自己跑程序,程序应该不会有什么问题,当然有问题可以评论下,鱼油互相帮助回答下!{:5_109:}
然后呢??爬取下一步保存在哪了?请指教:hdcomb@163.com hdcomb 发表于 2019-7-11 19:43
然后呢??爬取下一步保存在哪了?请指教:
帖子已编辑。对于爬取到链接后有很多中处理方式,我选择继承ImagesPipeline类然后直接下载到本地。 renmjchn@qq.com
求源码 老铁,我是小白,能不能直接点,感谢啊 gkd,老司机带带我,最爱那些一言不合就变换着姿势的网站了{:10_281:}{:10_281:}
gerry0071@163.com 滴滴滴
页:
[1]