一:基础版(抓取首页图片)

爬虫py文件代码:

 1 # -*- coding: utf-8 -*-
2 import scrapy
3 import sys
4 import io
5 from scrapy.selector import Selector
6 from scrapy.http import Request
7 from ..items import Day96XiaohuaItem
8 import re
9 sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
10
11
12 class XiaohuaSpider(scrapy.Spider):
13 name = 'xiaohua'
14 allowed_domains = ['www.xueshengmai.com/hua/']
15 start_urls = ['http://www.xueshengmai.com/hua/']
16
17 def parse(self, response):
18 # ------------持久化数据--------------
19 hxs = Selector(response=response).xpath("//div[@class='item_t']/div[@class='img']/a/img").extract()
20 # print(hxs)
21 for i in hxs:
22 # print(i)
23 title = re.findall("alt=(.*) src=",i)[0].strip('"')+".jpg"
24 src = "http://www.xueshengmai.com%s"%re.findall("src=(.*)>",i)[0].strip('"')
25 print(title,src)
26 item_obj = Day96XiaohuaItem(title=title, src=src)
27 yield item_obj

items.py 代码:

1 import scrapy
2
3
4 class Day96XiaohuaItem(scrapy.Item):
5 # define the fields for your item here like:
6 # name = scrapy.Field()
7 title=scrapy.Field()
8 src=scrapy.Field()

pipelines代码:

import requests

class Day96XiaohuaPipeline(object):
def process_item(self, item, spider):
file_path="imgs/%s"%item["title"]
file_src=item["src"]
f=open(file_path,"wb")
img_date=requests.get(file_src)
f.write(img_date.content)
f.close()

二:分页抓取校花网图片

下面代码和上面如出一辙,只将不同的代码块写下:

 1 # -*- coding: utf-8 -*-
2 import scrapy
3 import sys
4 import io
5 from scrapy.selector import Selector
6 from scrapy.http import Request
7 from ..items import Day96XiaohuaItem
8 import re
9
10 sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')
11
12
13 class XiaohuaSpider(scrapy.Spider):
14 name = 'xiaohua'
15 allowed_domains = ['www.xueshengmai.com/hua/']
16 start_urls = ['http://www.xueshengmai.com/hua/']
17
18 def parse(self, response):
19 # ------------持久化数据--------------
20 hxs = Selector(response=response).xpath("//div[@class='item_t']/div[@class='img']/a/img").extract()
21 # print(hxs)
22 for i in hxs:
23 # print(i)
24 title = re.findall("alt=(.*) src=", i)[0].strip('"') + ".jpg"
25 src = "http://www.xueshengmai.com%s" % re.findall("src=(.*)>", i)[0].strip('"')
26 print("正在努力抓取校花网图片...",title, src)
27 item_obj = Day96XiaohuaItem(title=title, src=src)
28 yield item_obj
29
30 hxs2 = Selector(response=response).xpath("//div[@class='page_num']/a").extract()
31 for i in hxs2:
32 page_number = re.findall(">(.*)<", i)[0]
33 # print("=========",page_number)
34 if page_number not in ["首页", "上一页", "下一页", "尾页"]:
35 url = "http://www.xueshengmai.com/list-1-%s.html" % page_number
36 # print("-------", url)
37 # 将新要访问的url添加到调度器
38 yield Request(url=url, callback=self.parse,dont_filter=True)

同时应该在settings中加上一句:

1 DEPTH_LIMIT = 1

否则程序将会一直深入下载,直到网站图片资源穷尽...

scrapy抓取校花网图片的更多相关文章

  1. Go语言实战-爬取校花网图片

    一.目标网站分析 爬取校花网http://www.xiaohuar.com/大学校花所有图片. 经过分析,所有图片分为四个页面,http://www.xiaohuar.com/list-1-0.htm ...

  2. python实战项目 — 爬取 校花网图片

    重点: 1.  指定路径创建文件夹,判断是否存在 2. 保存图片文件 # 获得校花网的地址,图片的链接 import re import requests import time import os ...

  3. Scrapy爬虫框架之爬取校花网图片

    Scrapy Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架. 其可以应用在数据挖掘,信息处理或存储历史数据等一系列的程序中.其最初是为了页面抓取 (更确切来说, 网络抓取 )所设 ...

  4. scrapy爬取校花网男神图片保存到本地

    爬虫四部曲,本人按自己的步骤来写,可能有很多漏洞,望各位大神指点指点 1.创建项目 scrapy startproject xiaohuawang scrapy.cfg: 项目的配置文件xiaohua ...

  5. Python-爬取校花网视频(单线程和多线程版本)

    一.参考文章 python爬虫爬取校花网视频,单线程爬取 爬虫----爬取校花网视频,包含多线程版本 上述两篇文章都是对校花网视频的爬取,由于时间相隔很久了,校花网上的一些视频已经不存在了,因此上述文 ...

  6. python爬虫基础应用----爬取校花网视频

    一.爬虫简单介绍 爬虫是什么? 爬虫是首先使用模拟浏览器访问网站获取数据,然后通过解析过滤获得有价值的信息,最后保存到到自己库中的程序. 爬虫程序包括哪些模块? python中的爬虫程序主要包括,re ...

  7. Scrapy爬虫实例——校花网

    学习爬虫有一段时间了,今天使用Scrapy框架将校花网的图片爬取到本地.Scrapy爬虫框架相对于使用requests库进行网页的爬取,拥有更高的性能. Scrapy官方定义:Scrapy是用于抓取网 ...

  8. 二、Item Pipeline和Spider-----基于scrapy取校花网的信息

    Item Pipeline 当Item在Spider中被收集之后,它将会被传递到Item Pipeline,这些Item Pipeline组件按定义的顺序处理Item. 每个Item Pipeline ...

  9. Requests 校花网图片爬取

    纪念我们闹过的矛盾,只想平淡如水 import requestsimport reurl = 'http://www.xiaohuar.com/list-1-%s.html'for i in rang ...

  10. 第六篇 - bs4爬取校花网

    环境:python3  pycharm 模块:requests  bs4  urlretrieve  os  time 第一步:获取网页源代码 import requests from bs4 imp ...

随机推荐

  1. Java异步编程详解

    在现代应用程序开发中,异步编程变得越来越重要,特别是在处理I/O密集型任务时.Java提供了一套强大的异步编程工具,使得开发者能够更有效地处理并发任务.本篇博文将深入探讨Java中异步编程的方方面面, ...

  2. 记一次 .NET某道闸收费系统 内存溢出分析

    一:背景 1. 讲故事 前些天有位朋友找到我,说他的程序几天内存就要爆一次,不知道咋回事,找不出原因,让我帮忙看一下,这种问题分析dump是最简单粗暴了,拿到dump后接下来就是一顿分析. 二:Win ...

  3. 接口自动化复习第四天利用正则和faker提取替换变量值

    在做接口自动化测试的时候,我们经常会遇到,有些字段利用随机生成数据就行了,不需要自己去构造测试数据.今天我就是要python中的第三方库faker来构造随机数,其次使用正则表达式来提取变量. 首先在接 ...

  4. 网络要素服务(WFS)详解

    目录 1. 概述 2. GetCapabilities 3. DescribeFeatureType 4. GetFeature 4.1 Get访问方式 4.2 Post访问方式 5. Transac ...

  5. 让vs支持wsl调试

    WSL安装 wsl --install -d Ubuntu 等一会提示输入用户名,不用管它,直接关闭,下次打开wsl,会以无密码的root用户打开 wsl卸载 wsl --unregister Ubu ...

  6. SpringBoot03:首页国际化

    页面国际化 有的时候,我们的网站会去涉及中英文甚至多语言的切换,这时候我们就需要学习国际化! 1.配置文件编写 首先在resources资源文件下新建一个i18n目录,存放国际化配置文件 新建一个lo ...

  7. [转帖]如何理解 kernel.pid_max & kernel.threads-max & vm.max_map_count

    https://www.cnblogs.com/apink/p/15728381.html 背景说明 运行环境信息,Kubernetes + docker .应用系统java程序 问题描述 首先从Ku ...

  8. [转帖]shell 把以空格分隔的变量 分割后的每个字段赋值给变量

    比如我有一个变量 "123 456 789",要求以空格为分隔符把这个变量分隔,并把分隔后的字段分别赋值给变量,即a=123:b=456:c=789 共有3中方法: 法一:先定义一 ...

  9. [转帖]Linux fuse用户态文件系统及其libfuse

    https://www.jianshu.com/p/abc5524ac18c 为什么要有用户态文件系统 VFS文件系统可知文件系统在内核态的,应用程序操作文件,统一调用内核态的VFS层抽象接口. 突然 ...

  10. [转帖]jcmd命令详解

    1 基本知识 jcmd 是在 JDK1.7 以后,新增了一个命令行工具. jcmd 是一个多功能的工具,相比 jstat 功能更为全面的工具,可用于获取目标 Java 进程的性能统计.JFR.内存使用 ...