如何用python爬取校花图片并保存到本地来?

  1. 获取什么数据?

    校花名字  name

    校花所在学校 school

    校花图片的url   img_ulr

  2.如何获取?

    打开网页http://www.xiaohuar.com/hua/ ,打开开发工具,研究每一张图片对应的html,找规律

    通过python 的scrapy框架进行批量爬取

环境声明:

  python 3.50

  scrapy 库

出现了哪些问题?

  1. 如何去除重复的url?

    通过对获取的url 进行md5,进行去重

  2. 如何该网站上所有的校花信息?

    先获取网页上所有的a标签,通过递归去取其他内容

  3. 如何内容永久化?

    写入文件,数据库等,该爬校花图片程序,我选择写入文件保存

如何创建与逻辑处理?

  1. 新建爬虫项目

    scrapy startproject pa_girls  (通过命令行)

  2. spiders 目录下,建立 一个叫 、school_girls.py文件

    在school_girls.py文件中写入:

#!/usr/bin/python3

import scrapy
from scrapy.selector import HtmlXPathSelector
import hashlib
# 把item模块添加到环境变量
from items import Pa1Item # # 最终获取信息列表
# school_girl = [] # 获得总url,目的去重
all_urls = {} class SchoolGirls(scrapy.Spider):
name = 'school_girls'
# 初始url,依次
start_urls = [
'http://www.xiaohuar.com/hua/',
] def parse(self, response):
# 爬虫主体
try:
# 找标签
hxs = HtmlXPathSelector(response)
girls = Pa1Item()
# 获取标签中指定数据
school = hxs.select('//div[@class="img"]/div[@class="btns"]/a/text()').extract()
name = hxs.select('//div[@class="img"]/span[@class="price"]/text()').extract()
img_url = hxs.select('//div[@class="img"]/a/img/@src').extract()
if school and name and img_url:
girls['school'] = hxs.select('//div[@class="img"]/div[@class="btns"]/a/text()').extract()
girls['name'] = hxs.select('//div[@class="img"]/span[@class="price"]/text()').extract()
girls['img_url'] = hxs.select('//div[@class="img"]/a/img/@src').extract()
yield girls
else:
pass
#
# 获取页面的所有连接
page_urls = hxs.select('//a/@href').extract()
page_urls.append('http://www.xiaohuar.com/hua/')
# print(page_urls) # 进行url去重
url_list = {}
for url in page_urls:
if url.startswith('JavaScript') or url.startswith('#') or not url:
continue
else:
m = hashlib.md5()
m.update(bytes(url, encoding='utf-8'))
img_id = m.hexdigest()
# 判断是否重复url,重复就不需要再次访问
if img_id in all_urls:
continue
else:
all_urls[img_id] = url
url_list[img_id] = url # 递归查找该页面所有url
for url in url_list.values():
yield scrapy.Request(url=url, callback=self.parse)
except Exception as e:
print(e)

  3. 在 items.py文件中写入

import scrapy

class Pa1Item(scrapy.Item):
name = scrapy.Field()
school = scrapy.Field()
img_url = scrapy.Field()

  4. 在pipelines.py文件中写入

import os
import requests class GirlsMessage(object):
'''获取有效数据'''
def process_item(self, item, spider):
for i in range(len(item['name'])):
if item['name'][i].strip() and item['school'][i].strip() and item['img_url'][i].strip(): # 把信息写入文件
message_girls = item['name'][i] + '_' + item['school'][i] + ':' \
+ 'http://www.xiaohuar.com/' + item['img_url'][i]
with open('E:\scrapy_new\img\message_girls.text', 'a+', encoding='utf-8') as f_girls:
f_girls.write(message_girls) # 下载图片
img_path = os.path.join('E:\scrapy_new\img', item['name'][i] +'_' + item['school'][i] +'.jpg')
img_url = 'http://www.xiaohuar.com/' + item['img_url'][i]
try:
img_date = requests.get(img_url).content
with open(img_path, 'bw',) as f_img:
f_img.write(img_date)
f_img.flush()
except Exception as e:
print(e)
return item

  5. 在setting文件中添加

# 设置爬取深度
DEPTH_LIMIT = 1 # 激活pipelines中类
ITEM_PIPELINES = {
'pa_1.pipelines.GirlsMessage': 200,
}

可能会出现哪些问题?

  1. items模块导入不了,如何解决

    在spiders目录下的__init__.py文件中加入:

import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))

 如何启动项目?

  scrapy crawl school_girls (需要在项目下,spiders目录下敲入命令)

python_爬校花图片的更多相关文章

  1. Python 爬虫 爬校花网!!

    爬虫:是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本 1.福利来了  校花网 ,首先说为什么要爬这个网站呢,第一这个网站简单爬起来容易不会受到打击,第二呢 你懂得... 1.第一步,需要下载 ...

  2. 用python爬校花网

    import requests import re import hashlib,time def get_index(url): response=requests.get(url) if resp ...

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

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

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

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

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

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

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

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

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

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

  8. Java基础-爬虫实战之爬去校花网网站内容

    Java基础-爬虫实战之爬去校花网网站内容 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 爬虫这个实现点我压根就没有把它当做重点,也没打算做网络爬虫工程师,说起爬虫我更喜欢用Pyt ...

  9. 爬虫(猫眼电影+校花网+github+今日头条+拉钩)

    Requests+正则表达式爬取猫眼TOP100榜电影信息 MARK:将信息写入文件解决乱码方法,开启进程池秒爬. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

随机推荐

  1. VM虚拟机安装centos,同网段,局域网能访问

    VM虚拟机安装centos,同网段,局域网能访问. 首先下载虚拟机镜像文件,自行下载 安装,网络模式为桥接,设置dhcp为主机同网段 保持VM服务开启 开机就是同网段了

  2. linux rsync服务

    1.rsync介绍rsync是一个开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具,rsync软件适用于nunix/linux/windows多操作系统上运行.官方网站:h ...

  3. linux 安装MySql 5.7.21 操作步骤

    一:到mysql官网下载最新的mysql包 mysql-5.7.21-linux-glibc2.12-x86_64 https://dev.mysql.com/downloads/mysql/ 二:在 ...

  4. linux(五)之vi编译器

    前面介绍了linux的常用命令和对文本的操作,接下来我将对大家领略一下vi编译器的强大功能.希望大家觉得写的还不错的话可以点个“推荐”哦! 一.vim/vi编译器简介 Vim/Vi是一个功能强大的全屏 ...

  5. Big Event in HDU(多重背包套用模板)

    http://acm.hdu.edu.cn/showproblem.php?pid=1171 Big Event in HDU Time Limit: 10000/5000 MS (Java/Othe ...

  6. spring boot容器启动详解

    目录 一.前言 二.容器启动 三.总结 =======正文分割线====== 一.前言 spring cloud大行其道的当下,如果不了解基本原理那么是很纠结的(看见的都是约定大于配置,但是原理呢?为 ...

  7. chorme调试Paused in debugger问题解决

    最近出现的问题,使用chorme调试代码总是这个状态(Paused in debugger[debug的时候暂停了]): 一刷新就这样,非常的不舒服.当然你可以选择多按几次F8跳出,下面提供几种方式解 ...

  8. Spark学习笔记3(IDEA编写scala代码并打包上传集群运行)

    Spark学习笔记3 IDEA编写scala代码并打包上传集群运行 我们在IDEA上的maven项目已经搭建完成了,现在可以写一个简单的spark代码并且打成jar包 上传至集群,来检验一下我们的sp ...

  9. 最大连接数:60 iops:150 什么概念?

    最大连接数:最多允许同时多少个客户端连接到数据库  iops:每秒读写操作的次数    关于最大连接数:  假设一个时间点:00:01:00    00:01:01 -> 第一个客户端连接到数据 ...

  10. putty 与winscp 区别

    https://zhidao.baidu.com/question/377968180.html putty 与winscp 有什么区别, 装了 winscp 可以由 putty 替换么 ? 具体用法 ...