scrapy 爬取大型图片网站(http://5442.com/)
1、首先创建项目
进入相对应目录,输入scrapy startproject img
2、创建爬虫文件
cd img 输入 scrapy genspider -t basic qiantu 5442.com
3、进入 items文创建保存url地址容器
import scrapyclass ImgItem(scrapy.Item):# define the fields for your item here like: # name = scrapy.Field() url = scrapy.Field()
4、分析网站 编写
首页爬取的第一层链接
def parse(self, response):urldata = response.xpath("//div[@class='nav both']//a/@href").extract()print(urldata)for i in range(0, len(urldata)):urllist = urldata[i]yield Request(url=urllist, callback=self.next)
提取第二层链接
def next(self, response):thisurl = response.url# print(thisurl) for j in range(1, 250):if thisurl == "http://www.5442.com/mingxing/":pageurl = thisurl + "list_" + "2_" + str(j) + ".html" yield Request(url=pageurl, callback=self.next1)if thisurl == "http://www.5442.com/qiche/":pageurl = thisurl + "list_" + "3_" + str(j) + ".html" yield Request(url=pageurl, callback=self.next1)if thisurl == "http://www.5442.com/fengjing/":pageurl = thisurl + "list_" + "4_" + str(j) + ".html" yield Request(url=pageurl, callback=self.next1)if thisurl == "http://www.5442.com/youxi/":pageurl = thisurl + "list_" + "5_" + str(j) + ".html" yield Request(url=pageurl, callback=self.next1)if thisurl == "http://www.5442.com/katong/":pageurl = thisurl + "list_" + "6_" + str(j) + ".html" yield Request(url=pageurl, callback=self.next1)if thisurl == "http://www.5442.com/tushuo/":pageurl = thisurl + "list_" + "8_" + str(j) + ".html" yield Request(url=pageurl, callback=self.next1)if thisurl == "http://www.5442.com/mingxingtuku/":pageurl = thisurl + "list_" + "9_" + str(j) + ".html" yield Request(url=pageurl, callback=self.next1)def next1(self, response):imglist = response.xpath("//div[@class='w650 l']//li//a/@href").extract()# print(imglist) # print(type(imglist)) for i in range(0, len(imglist)):thisurl = imglist[i]# print(thisurl) yield Request(url=thisurl, callback=self.next2)
http://www.5442.com/mingxing/list_2_2.html
由于此网站每个分类的页数没有显示,所以就以每个分类250页为例,分析下一页链接构成(next方法), (next1方法是爬取图片所在链接)
爬取第三层链接(图片的最终地址)
def next2(self, response):imgurllist = response.xpath("//div[@class='arcBody']//a/img/@src").extract()try:for i in range(0, len(imgurllist)):imgurl = imgurllist[i]item = ImgItem()item['url'] = imgurl# print(item['url']) yield itemexcept ValueError as e:pass
5、写pipelines文件
class ImgPipeline(object):def process_item(self, item, spider):# print(item["url"]) try:thisurl = item["url"]# print(thisurl) # 避免名字重复,名字再加上个随机数 file = "F:/peitao/image/" + str(int(random.random() * 100000)) + ".jpg" urllib.request.urlretrieve(thisurl, filename=file)except Exception as e:pass return item
要记得在setting文件中 取消注释的
ITEM_PIPELINES = {'img.pipelines.ImgPipeline': 300,
}
scrapy 爬取大型图片网站(http://5442.com/)相关推荐
- Scrapy爬取ammmi图片
Scrapy爬取ammmi图片 相关配置: python version:3.7 IDE:Pycharm environment:windows10 Framework:Scrapy 相关链接: We ...
- Scrapy爬取美女图片续集 (原创)
上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用. 在学习Scra ...
- scrapy爬取知名问答网站(解决登录+保存cookies值+爬取问答数据)--完整版完美解决登录问题
菜鸟写Python:scrapy爬取知名问答网站 实战(3) 一.文章开始: 可能看到这篇文章的朋友,大多数都是受慕课网bobby讲师课程的影响,本人也有幸在朋友处了解过这个项目,但是似乎他代码中登录 ...
- 3秒爬取百度图片网站,批量下载各种图片
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者:一行数据 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...
- Scrapy爬取美女图片续集
上一篇咱们讲解了Scrapy的工作机制和如何使用Scrapy爬取美女图片,而今天接着讲解Scrapy爬取美女图片,不过采取了不同的方式和代码实现,对Scrapy的功能进行更深入的运用. 在学习Scra ...
- scrapy爬取昵图网图片
一 : 创建scrapy项目 (1) 使用命令创建项目 : scrapy startproject nipic[项目名可以随意] (2) 使用命令创建一个爬虫文件 : scrapy genspider ...
- scrapy爬取美女图片
使用scrapy爬取整个网站的图片数据.并且使用 CrawlerProcess 启动. 1 # -*- coding: utf-8 -* 2 import scrapy 3 import reques ...
- 【python实现网络爬虫(5)】第一个Scrapy爬虫实例项目(Scrapy原理及Scrapy爬取名言名句网站信息)
Scrapy介绍 总共有五部分组成的:具体的流程可看图示 引擎.调度器.下载器.蜘蛛和项目管道 爬取流程 针对于每个URL, Scheduler -> Downloader -> Spid ...
- 三十一、Scrapy爬取百度图片
@Author:Runsen Runsen近段时间进入Scrapy,写了几个爬虫练练手,就找百度图片入手了.本文就是Scrapy的入门文章. 文章目录 目标 创建项目 分析逻辑 代码 目标 爬取 百度 ...
- 来来scrapy爬取各大网站每日热点新闻
一.背景 最近玩爬虫,各种想爬,scrapy又非常好用.想多爬一点东西,决定爬一爬各大网站的热点新闻. 想到就开始做了哈 二.上代码 1.开始搭建项目 scrapy startproject craw ...
最新文章
- Verilog初级教程(11)Verilog中的initial块
- MAC 开机密码破解
- 8、计算机图形学——纹理的相关问题及解决办法
- matlab中矩阵的各种分解
- 降级安装_如何升级iOS13测试版,还有降级
- 登录验证应该是进行在客户端还是服务器端_网站登录认证方式
- Redis 6.0.0 GA
- 关系网络实战|设备关联信息定位团伙欺诈
- 阿里云linux主机更新hostname
- 20190903每日一句
- Go学习笔记 一篇到底
- 怎么看电脑网卡是否支持5g频段
- 学习编程比学开车要简单
- 关于技嘉雷电扩展卡SSDT驱动教程
- Mixly电子音乐:蜗牛与黄鹂鸟
- HDU 6656 Kejin Player(期望)
- 摄影中的曝光补偿、白加黑减_我是亲民_新浪博客
- 2019 杭电多校 E - Everything Is Generated In Equal Probability HDU 6595 数学
- 找出两个List集合重复的元素
- 禽畜养殖生产智慧管理系统方案
热门文章
- mysql 修改隔离级别_设置mysql隔离级别
- VMWare、Ubuntu、ROS安装参考汇总
- 第十三章 音视频播放——Qt
- 安装淘宝镜像cnpm时报错!npm ERR! enoent ENOENT: no such file or directory, rename
- OSI模型工作模式解析
- 360修复高危漏洞可以修复吗_怎么关闭360高危漏洞修复提醒?
- win10 怎么进入dos,并且通过路径运行可操作程序
- 掷骰子(python代码)
- Mybatis与springboot项目启动时出现Field mapper in ‘xxx‘ required a bean of type ‘xxx‘ that could not be found
- 一丶exit(1)丶exit(0)和return的区别