1.操作mysql

items.py

meiju.py

3.piplines.py

4.settings.py

--------------------------------------------------------------------------------------------------------------------------

批量下载图片。分类

网站:https://movie.douban.com/top250

需求:按电影分类,获取里面的演职员图片。并存入各自的分类当中

效果:

  

代码

因为我们主要工作是下载。不存入数据库。存入数据库的话可以参考上面部分。

现在只需要修改spiders/xxx_spiders.py文件。就是开启项目适合生成的文件

我的是这个

以下是这个文件夹的代码。

# -*- coding: utf-8 -*-
import scrapy
import os
import urllib.request
import re class DoubanDetailSpidersSpider(scrapy.Spider):
name = 'douban_detail_spiders'
allowed_domains = ['movie.douban.com']
start_urls = ['https://movie.douban.com/top250'] file_path = "D:\\www\\scrapy\\douban_detail\\image\\" def parse(self, response):
movie_list = response.xpath("//div[@class='article']//ol[@class='grid_view']/li") for i_item in movie_list:
# 封面图
master_pic_path = i_item.xpath(".//div[@class='pic']//a//img/@src").extract_first()
# 文件名
name = i_item.xpath(".//div[@class='info']//a/span[1]/text()").extract_first()
# 创建文件夹
self.fileIsBeing(name)
# 详情连接
detail_url = i_item.xpath(".//div[@class='hd']//a/@href").extract_first()
# 获取详情里面内容
# detail_link = response.xpath(".//div[@class='hd']//a/@href").extract()
# for link in detail_link:
         # 这里是进入二级页面操作,在for循环里面。
yield scrapy.Request(detail_url, meta={'name': name}, callback=self.detail_parse, dont_filter=True) # 解析下一页
next_link = response.xpath("//div[@class='article']//div[@class='paginator']//span[@class='next']/link/@href").extract()
print(next_link)
if next_link:
next_link = next_link[0]
yield scrapy.Request("https://movie.douban.com/top250" + next_link, callback=self.parse) # 判断文件是否存在
# 不存在则创建
def fileIsBeing(self, name):
path = self.file_path + name
bool = os.path.exists(path)
if not(bool):
os.mkdir(path)
return path # 解析详情里面的数据 获取二级页面内容操作。主要获取图片
def detail_parse(self, response):
name = response.meta['name']
print(name)
movie_prople_list = response.xpath("//div[@id='celebrities']//ul[@class='celebrities-list from-subject __oneline']//li")
for i_mov_item in movie_prople_list:
background_img = i_mov_item.xpath(".//div[@class='avatar']/@style").extract_first()
user_name = i_mov_item.xpath(".//div[@class='info']//a/@title").extract_first()
img_file_name = "%s.jpg" % user_name # 工作人员
img_url = self.txt_wrap_by('(', ')', background_img) # 图片地址
print(img_file_name)
file_path = os.path.join(self.file_path+name, img_file_name)
urllib.request.urlretrieve(img_url, file_path)
# print(img_file_name) # 截取字符串中间部分
def txt_wrap_by(self, start_str, end, html):
start = html.find(start_str)
if start >= 0:
start += len(start_str)
end = html.find(end, start)
if end >= 0:
return html[start:end].strip()

码云:https://gitee.com/chenrunxuan/scrapy

scrapy操作mysql/批量下载图片的更多相关文章

  1. scrapy批量下载图片

    # -*- coding: utf-8 -*- import scrapy from rihan.items import RihanItem class RihanspiderSpider(scra ...

  2. 第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签

    第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签 标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象需 ...

  3. 【Python】nvshens按目录批量下载图片爬虫1.00(单线程版)

    # nvshens按目录批量下载图片爬虫1.00(单线程版) from bs4 import BeautifulSoup import requests import datetime import ...

  4. javaWeb 批量下载图片

      批量下载网页图片 CreateTime--2017年9月26日15:40:43 Author:Marydon 所用技术:javascript.java 测试浏览器:chrome 开发工具:Ecli ...

  5. C++ 根据图片url 批量 下载图片

    最近需要用到根据图片URL批量下载到本地的操作.查找了相关资料,记录在这儿. 1.首先在CSV文件中提取出url ifstream fin("C:\\Users\\lenovo\\Deskt ...

  6. 用python批量下载图片

    一 写爬虫注意事项 网络上有不少有用的资源, 如果需要合理的用爬虫去爬取资源是合法的,但是注意不要越界,前一阶段有个公司因为一个程序员写了个爬虫,导致公司200多个人被抓,所以先进入正题之前了解下什么 ...

  7. python——批量下载图片

    前言 批量下载网页上的图片需要三个步骤: 获取网页的URL 获取网页上图片的URL 下载图片 例子 from html.parser import HTMLParser import urllib.r ...

  8. 利用Node 搭配uglify-js压缩js文件,批量下载图片到本地

    Node的便民技巧-- 压缩代码 下载图片 压缩代码 相信很多前端的同学都会在上线前压缩JS代码,现在的Gulp Webpack Grunt......都能轻松实现.但问题来了,这些都不会,难道就要面 ...

  9. scrapy中的ImagePipeline下载图片到本地、并提取本地的保存地址

    通过scrapy内置到ImagePipeline下载图片到本地 在settings中打开 ITEM_PIPELINES的注释,并在这里面加入 'scrapy.pipelines.images.Imag ...

随机推荐

  1. 蔚来杯2022牛客暑期多校训练营5 ABCDFGHK

    比赛链接 A 题解 知识点:图论,dp. 暴力建图,连接所有点的双向通路,除了原点是单向的,并且把路径长度作为权值. 随后,从原点出发(\(f[0] = 0\),其他点负无穷,保证从原点出发),按照权 ...

  2. Redis缓存雪崩、缓存穿透、缓存击穿

    缓存雪崩 Redis中的缓存数据是有过期时间的,当在同一时间大量的缓存同时失效时就会造成缓存雪崩. 解决方案 1.设置Redis中的key永不过期,缺点是会占用很多内存 2.使用Redis的分布式锁S ...

  3. 使用.NET简单实现一个Redis的高性能克隆版(二)

    译者注 该原文是Ayende Rahien大佬业余自己在使用C# 和 .NET构建一个简单.高性能兼容Redis协议的数据库的经历. 首先这个"Redis"是非常简单的实现,但是他 ...

  4. 大数据开发,Hadoop Spark太重?你试试esProc SPL

    摘要:由于目标和现实的错位,对很多用户来讲,Hadoop成了一个在技术.应用和成本上都很沉重的产品. 本文分享自华为云社区<Hadoop Spark太重,esProc SPL很轻>,作者: ...

  5. AI+医疗:使用神经网络进行医学影像识别分析 ⛵

    作者:韩信子@ShowMeAI 计算机视觉实战系列:https://www.showmeai.tech/tutorials/46 行业名企应用系列:https://www.showmeai.tech/ ...

  6. 一个注解搞定SpringBoot接口定制属性加解密

    前言 上个月公司另一个团队做的新项目上线后大体上运行稳定,但包括研发负责人在内的两个人在项目上线后立马就跳槽了,然后又交接给了我这个「垃圾回收人员」. 本周甲方另一个厂家的监控平台扫描到我们这个项目某 ...

  7. LuoguP1283 平板涂色(状压DP)

    参考了I_AM_HelloWord的代码,\(f[i][j]\)表示转态\(i\)时最后一刷为\(j\)的最小代价,上面的块可用暴力填涂,注意边界 #include <cstdio> #i ...

  8. [CF1519D] Maximum Sum of Products (暴力)

    题面 有两个长为 n n n 的序列 a a a 和 b b b,至多反转 a a a 的一个子区间,最大化 ∑ i = 1 n a i ⋅ b i \sum_{i=1}^na_i\cdot b_i ...

  9. 【HTML】学习路径2-设置文档类型、网页编码、文件注释

    第一章:设置文档类型 我们通常在html文件最前面写一行: <!DOCTYPE html> 这玩意有啥用? https://developer.mozilla.org/zh-CN/docs ...

  10. Openstack Neutron : 安全

    目录 - iptable:起源 - tables - chains - rules - 方向 - Security group 安全组: - Firewall 防火墙: - 更高的安全 - 无处安放的 ...