前情提示
看动漫龙珠超 然后去贴吧发现好多图但是作为计算机专业的大二狗,我已经懒得下载了,于是操起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提取的资料大家大家可以看看小甲鱼
嘿嘿我也是初学者写的不够完整,希望能够帮助大家