scrapy框架爬取百度贴吧图片

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/The_best_man/article/details/77986360

前情提示

看动漫龙珠超 然后去贴吧发现好多图但是作为计算机专业的大二狗,我已经懒得下载了,于是操起python开始大刀阔斧的开战(download)图片

工具

正所谓工欲善其事必先利其器,首先得有工具python2.x或者python3.x然后安装必要的模块pip install scrapy可能你会发现安装失败,那么请你按照命令框的提示安装scrapy所依赖的几个库模块

开始设计

由于scrapy 是框架所以我们只需进行部分代码的编写,剩余的框架基本已经帮你完成了
1.在cmd模式下进入你要进入的磁盘空间
2.cmd下创建项目 scrapy startproject pictures此处我创建的项目文件名称为 pictures
3.cmd继续建立我的苦工( 爬 虫 )为我服务 scrapy genspider download此处download设置了爬虫文件中爬虫的名字即 name =”download”
4.修改items.py文件

import scrapy

class PicturesItem(scrapy.Item):
    # define the fields for your item here like:
    # name = scrapy.Field()
    img_link = scrapy.Field()#图片的地址资源

5.编写爬虫文件download.py

# -*- coding: utf-8 -*-
import scrapy
#  加载item 文件
from pictures.items import PicturesItem
from scrapy import Request

#爬虫图片下载器

class DownloadSpider(scrapy.Spider):
    name = 'download'#爬虫名称
    #allowed_domains = ['http://c.tieba.baidu.com/p/5273049563']
    # 这个一定不能写 由于后缀不同的原因,所以去掉或者request的地址和allow_domain里面的冲突,从而被过滤掉。可以停用过滤功能。yield Request(url, callback=self.parse_item, dont_filter=True) 
    # 字符串拼接获取下载页面地址
    baseURL = 'http://c.tieba.baidu.com/p/5273049563?pn='
    offset = 1
    #  获得的地址
    start_urls = [baseURL + str(offset)]

    def parse(self, response):
        # 获取每页的图片src 地址
        node_list = response.xpath('//img[@class="BDE_Image"]/@src')
        for node in node_list:
            item = PicturesItem()
            item['img_link'] = node.extract()

            yield item
        self.offset += 1
        if self.offset < 6:
            newurl = self.baseURL + str(self.offset)
            yield scrapy.Request(newurl, callback=self.parse)

6.修改管道文件pipelines.py

from scrapy.pipelines.images import ImagesPipeline
import scrapy

class PicturesPipeline(ImagesPipeline):
    # 重写方法
    def get_media_requests(self, item, info):
        img_link = item['img_link']
        yield scrapy.Request(img_link)
#   def process_item(self, item, spider):
#       return item

7.修改设置文件settings.py
-7.1关闭robot协议即设置
-7.2设置USER-AGENT
-7.3开启管道
-7.4设定存储路径

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.86 Safari/537.36'
ROBOTSTXT_OBEY = False
ITEM_PIPELINES = {
    'pictures.pipelines.PicturesPipeline': 300,
}
#设置图片下载路径  继承pipelines中ImagesPipeline将根据路径继承
IMAGES_STORE = ''#自己设定

作品

龙珠超

—-在此期间我查阅了很多博客都没有得到详细的帮助,但是发现了一些有用的东西,现在分享给大家,希望对你们有所帮助
scrapy框架视频
scrapy中文文档
scrapy英文最新文档
对于我用到的xpath提取的资料大家大家可以看看小甲鱼

嘿嘿我也是初学者写的不够完整,希望能够帮助大家

展开阅读全文

没有更多推荐了,返回首页