1. 程式人生 > >Python 爬取美女圖片,分目錄多級存儲

Python 爬取美女圖片,分目錄多級存儲

port Language resp pac rst apt itl album domain

最近有個需求:下載https://mm.meiji2.com/網站的圖片。

所以簡單研究了一下爬蟲。

在此整理一下結果,一為自己記錄,二給後人一些方向。

爬取結果如圖:

技術分享圖片

整體研究周期 2-3 天,看完之後,在加上看的時候或多或少也會自己搜到一些其他知識。

順著看下來,應該會對爬蟲技術有一個初步的認識。

大致的步驟:

分析頁面,編寫爬蟲規則

下載圖片,如果有分頁,則分頁

多頁爬取,並且分目錄保存到本地,多級存儲。

應對反爬蟲

以上就是學習的時候,看到的一些資料。

然後貼出一篇我自己寫的,爬取的時候分了三級目錄,並且,最後一級還有 下一頁。

import scrapy

from znns.items import ZnnsItem

class NvshenSpider(scrapy.Spider):

name = ‘znns‘

allowed_domains = [‘‘]

start_urls = [‘https://mm.meiji2.com/‘]

headers = {

‘Accept‘: ‘text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8‘,

‘Accept-Language‘: ‘zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3‘,

}

# 排行榜循環

def parse(self, response):

exp = u‘//div[@class="pagesYY"]//a[text()="下一頁"]/@href‘  # 下一頁的地址

_next = response.xpath(exp).extract_first()

yield scrapy.Request(response.urljoin(_next), callback=self.parse, dont_filter=True)

for p in response.xpath(‘//li[@class="rankli"]//div[@class="rankli_imgdiv"]//a/@href‘).extract():  # 某一個妹子簡介詳情頁

item_page = "https://mm.meiji2.com/" + p + "album/"  # 拼接 全部相冊頁面

yield scrapy.Request(item_page, callback=self.parse_item, dont_filter=True)

# 單個介紹詳情頁

def parse_item(self, response):

item = ZnnsItem()

# 某個人的名字,也就是一級文件夾

item[‘name‘] = response.xpath(‘//div[@id="post"]//div[@id="map"]//div[@class="browse"]/a[2]/@title‘).extract()[

0].strip()

exp = ‘//li[@class="igalleryli"]//div[@class="igalleryli_div"]//a/@href‘

for p in response.xpath(exp).extract():  # 遍歷妹子全部相冊

item_page = "https://mm.meiji2.com/" + p  # 拼接圖片的詳情頁

yield scrapy.Request(item_page, meta={‘item‘: item}, callback=self.parse_item_details, dont_filter=True)

# 圖片主頁,開始抓取

def parse_item_details(self, response):

item = response.meta[‘item‘]

item[‘image_urls‘] = response.xpath(‘//ul[@id="hgallery"]//img/@src‘).extract()  # 圖片鏈接

item[‘albumname‘] = response.xpath(‘//h1[@id="htilte"]/text()‘).extract()[0].strip()  # 二級文件夾

yield item

new_url = response.xpath(‘//div[@id="pages"]//a[text()="下一頁"]/@href‘).extract_first()  # 翻頁

new_url = "https://mm.meiji2.com/" + new_url

  

Python 爬取美女圖片,分目錄多級存儲