爬虫项目(斗图啦scrapy)

2023-10-18 17:20
文章标签 项目 scrapy 爬虫 斗图

本文主要是介绍爬虫项目(斗图啦scrapy),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

斗图啦网址
https://www.doutula.com/photo/list/
(1)分析网站 得到图片的地址
在这里插入图片描述
(2)进入得到的网址分析
在这里插入图片描述

在这里插入图片描述
(3)编写项目代码
(4)scrapy爬取,源码
items.py

import scrapyclass DoutubaItem(scrapy.Item):# define the fields for your item here like:# name = scrapy.Field()name = scrapy.Field()link = scrapy.Field()

settings.py

ROBOTSTXT_OBEY = False
ITEM_PIPELINES = {#'doutuba.pipelines.DoutubaPipeline': 300,'doutuba.pipelines.DoutuImgPipeline': 300,
}
IMAGES_STORE = 'images'  #图片的地址  当前文件夹

pipeline.py

class DoutuImgPipeline(ImagesPipeline):def get_media_requests(self, item, info):yield scrapy.Request(url=item["link"],  meta={'item': item})def file_path(self, request, response=None, info=None):item = request.meta['item']path = item['name'] + '.jpg'return path

spider.py

import scrapy
from doutuba.items import DoutubaItemclass DoutuSpider(scrapy.Spider):name = 'doutu'allowed_domains = ['doutula.com']offset = 1start_urls = ['https://www.doutula.com/photo/list/']def parse(self, response):img_srcs = response.xpath('//*[@id="pic-detail"]/div/div[2]/div[2]/ul/li/div/div/a/@href').extract()for link in img_srcs:yield scrapy.Request(link, callback=self.getNew)self.offset += 1url = "https://www.doutula.com/photo/list/?page=" + str(self.offset)yield scrapy.Request(url, callback=self.parse)def getNew(self, response):item = DoutubaItem()name = response.xpath('//*[@id="detail"]/div/div[2]/li/div[1]/h1/a/text()').extract()img_src = response.xpath('//*[@id="detail"]/div/div[2]/li/div[2]/div/div/div/div/table/tbody/tr[1]/td/img/@src').extract()item["name"] = name[0]item["link"] = img_src[0]yield item

(5)效果图
在这里插入图片描述
如有错误,多多指教

这篇关于爬虫项目(斗图啦scrapy)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/234050

相关文章

golang实现动态路由的项目实践

《golang实现动态路由的项目实践》本文主要介绍了golang实现动态路由项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习... 目录一、动态路由1.结构体(数据库的定义)2.预加载preload3.添加关联的方法一、动态路由1

Spring 缓存在项目中的使用详解

《Spring缓存在项目中的使用详解》Spring缓存机制,Cache接口为缓存的组件规范定义,包扩缓存的各种操作(添加缓存、删除缓存、修改缓存等),本文给大家介绍Spring缓存在项目中的使用... 目录1.Spring 缓存机制介绍2.Spring 缓存用到的概念Ⅰ.两个接口Ⅱ.三个注解(方法层次)Ⅲ.

一文教你Java如何快速构建项目骨架

《一文教你Java如何快速构建项目骨架》在Java项目开发过程中,构建项目骨架是一项繁琐但又基础重要的工作,Java领域有许多代码生成工具可以帮助我们快速完成这一任务,下面就跟随小编一起来了解下... 目录一、代码生成工具概述常用 Java 代码生成工具简介代码生成工具的优势二、使用 MyBATis Gen

springboot项目redis缓存异常实战案例详解(提供解决方案)

《springboot项目redis缓存异常实战案例详解(提供解决方案)》redis基本上是高并发场景上会用到的一个高性能的key-value数据库,属于nosql类型,一般用作于缓存,一般是结合数据... 目录缓存异常实践案例缓存穿透问题缓存击穿问题(其中也解决了穿透问题)完整代码缓存异常实践案例Red

SpringBoot项目中Redis存储Session对象序列化处理

《SpringBoot项目中Redis存储Session对象序列化处理》在SpringBoot项目中使用Redis存储Session时,对象的序列化和反序列化是关键步骤,下面我们就来讲讲如何在Spri... 目录一、为什么需要序列化处理二、Spring Boot 集成 Redis 存储 Session2.1

springboot+vue项目怎么解决跨域问题详解

《springboot+vue项目怎么解决跨域问题详解》:本文主要介绍springboot+vue项目怎么解决跨域问题的相关资料,包括前端代理、后端全局配置CORS、注解配置和Nginx反向代理,... 目录1. 前端代理(开发环境推荐)2. 后端全局配置 CORS(生产环境推荐)3. 后端注解配置(按接口

Vue 2 项目中配置 Tailwind CSS 和 Font Awesome 的最佳实践举例

《Vue2项目中配置TailwindCSS和FontAwesome的最佳实践举例》:本文主要介绍Vue2项目中配置TailwindCSS和FontAwesome的最... 目录vue 2 项目中配置 Tailwind css 和 Font Awesome 的最佳实践一、Tailwind CSS 配置1. 安

Spring Boot项目打包和运行的操作方法

《SpringBoot项目打包和运行的操作方法》SpringBoot应用内嵌了Web服务器,所以基于SpringBoot开发的web应用也可以独立运行,无须部署到其他Web服务器中,下面以打包dem... 目录一、打包为JAR包并运行1.打包为可执行的 JAR 包2.运行 JAR 包二、打包为WAR包并运行

Nginx部署React项目时重定向循环问题的解决方案

《Nginx部署React项目时重定向循环问题的解决方案》Nginx在处理React项目请求时出现重定向循环,通常是由于`try_files`配置错误或`root`路径配置不当导致的,本文给大家详细介... 目录问题原因1. try_files 配置错误2. root 路径错误解决方法1. 检查 try_f

解决Maven项目报错:failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.13.0的问题

《解决Maven项目报错:failedtoexecutegoalorg.apache.maven.plugins:maven-compiler-plugin:3.13.0的问题》这篇文章主要介... 目录Maven项目报错:failed to execute goal org.apache.maven.pl