先上网址:http://www.plantarium.ru/page/samples/taxon/41302.html  一个意大利的植物网站。

刚刚搭建完了Scrapy框架,于是打算拿这个网站来练练手。

1.首先scrapy startproject plant 建立一个名为plant的项目

2.然后明确自己需要提取的内容:图片的网址,图片的科,图片所示植物的名字

所以修改items.py文件:

from scrapy.item import Item,Fieldclass PlantItem(Item):picture_name=Field()picture_url=Field()picture_family=Field()<pre name="code" class="python">

3.核心内容当然是蜘蛛本身,在spiders文件夹下新建文件plant_spider.py:

# -*- coding:utf-8 -*-
from scrapy.spiders import Spider
from plant.items import PlantItem
from scrapy.selector import Selector
from scrapy.http import Request
import re
import os
import sys
import time
import requests
reload(sys)
sys.setdefaultencoding('utf-8')  class PlantSpider(Spider):name = "plant"  start_urls = [  "http://dryades.units.it/euganei/index.php?procedure=list"  ]def parse(self, response):sel=Selector(response)sites=sel.xpath('//tr').extract()sites.pop()sites.pop()for site in sites:image_url='http://dryades.units.it/euganei/'+site.split('href="')[1].split('">')[0].replace('amp;','')open('url_content.txt', 'a').write(image_url+'\n')yield Request(image_url,callback=self.parse_item)def parse_item(self,response):path='D:\\Italy_Plant\\'self.create_folder(path)sel=Selector(response)images=sel.xpath('//a[contains(@href,".jpg")]/@href').extract()for image in images:item=PlantItem()item['picture_url']=imageitem['picture_name']=sel.xpath('//title/text()').extract()[0].split('-')[0].replace('.','').strip()item['picture_family']=sel.xpath('//td/b[contains(text(),"ACEAE")]/text()').extract()[0].split(' ')[0].capitalize()open('image_url.txt', 'a').write(item['picture_url']+'★'+item['picture_name']+'★'+item['picture_family']+'\n')self.create_folder(path+item['picture_family'])self.create_folder(path+item['picture_family']+'\\'+item['picture_name'])self.download_image(item['picture_url'],path+item['picture_family']+'\\'+item['picture_name']+'\\'+item['picture_url'].split('/')[-1])yield itemdef create_folder(self,path):if not os.path.exists(path):os.mkdir(path)def download_image(self,imageurl,imagename):i=0p=Truewhile p and i<=10:try:data=requests.get(imageurl,timeout=20).contentwith open(imagename,'wb') as f:f.write(data)p=Falseexcept:i+=1print 'save picture wrong,please wait 2 seconds'time.sleep(2)

4.设置管道,处理保存爬去的信息。所以修改pipelines.py.

import json
import codecsclass PlantPipeline(object):def __init__(self):self.file=codecs.open('italy_data.json',mode='wb',encoding='utf-8')def process_item(self, item, spider):line = json.dumps(dict(item)) + '\n'  self.file.write(line.decode("unicode_escape"))return itemdef close_spider(self,spider):print 'over'

5.设置配置文件settings.py.

BOT_NAME = 'plant'SPIDER_MODULES = ['plant.spiders']
NEWSPIDER_MODULE = 'plant.spiders'
CONCURRENT_REQUESTS = 1COOKIES_ENABLED=TrueITEM_PIPELINES={'plant.pipelines.PlantPipeline':300
}

6.最后scrapy crawl plant。(然而这三个字母在调试过程中可是打了上百遍才成功。。。)

优化:为了解决防止网站连接超时,添加重新请求:在setting.py中添加RETRY_ENABLED=True,RETRY_TIMES=10

Scrapy框架下载一个意大利网站所有植物图片并重命名归科相关推荐

  1. Python的Scrapy框架爬取诗词网站爱情诗送给女友

    文章目录 前言 效果展示: 一.安装scrapy库 二.创建scrapy项目 三.新建爬虫文件scmg_spider.py 四.配置settings.py文件 五.定义数据容器,修改item.py文件 ...

  2. Scrapy框架下载图片(站酷网下载图片)

    Scrapy框架下载图片 下载图片 Scrapy框架下载文件(包括图片有自己一套解决方案,比我们直接使用urlretriever更加有优势) 避免重新下载最近下载过的文件 可以方便的指定文件存储路径 ...

  3. 使用scrapy框架爬取汽车之家的图片(高清)

    使用scrapy框架爬取汽车之家的图片(高清) 不同于上一篇的地方是,这篇要爬取的是高清图片,而不仅仅是缩略图. 先来看一下要爬取的页面:https://car.autohome.com.cn/pic ...

  4. Scrapy 框架获取豆瓣电影的信息(包括图片)和电影评论-1

    文章目录 一.项目目录 二.定义爬取结果存储的数据结构(items.py) 电影信息 评论信息 三.爬取到结果后的处理类(spiders 文件夹) 电影信息(movieInfo.py) 评论信息(co ...

  5. Scrapy框架下载与安装

    Scrapy框架 Scrapy是一种用于抓取网站和提取结构化数据的应用程序框架,可用于广泛的有用应用程序,如数据挖掘,信息处理或历史存档 Scrapy是用纯python实现一个为了爬取网站数据,提取结 ...

  6. python网站框架下载_Python搭建网站框架

    1. 机器上安装python 在python官网下载python的2.7版本,然后一路next就可以安装了: 安装结束后,开启菜单会有python客户端,但是一般使用cmd命令行模式进行运行: 添加p ...

  7. python爬虫利用Scrapy框架爬取汽车之家奔驰图片--实战

    先看一下利用scrapy框架爬取汽车之家奔驰A级的效果图 1)进入cmd命令模式下,进入想要存取爬虫代码的文件,我这里是进入e盘下的python_spider文件夹内 C:\Users\15538&g ...

  8. 框架下载_25. Scrapy 框架-下载中间件Middleware

    1. Spider 下载中间件(Middleware) Spider 中间件(Middleware) 下载器中间件是介入到 Scrapy 的 spider 处理机制的钩子框架,您可以添加代码来处理发送 ...

  9. GO Frame框架搭建一个web网站(一)

    1.Go Frame框架学习 官方文档 Go Frame 框架官方网站 2.下载gf-cli(Go Frame开发工具链) 工具开源项目地址,提供了各种操作系统版本和安装方法 完整命令 D:\gola ...

最新文章

  1. poj 3254 Corn Fields (状态压缩DP)
  2. istio安装命令整理
  3. 线程:synchronized方法
  4. POLL原理分析与java实战
  5. 如何实现实时文本过滤
  6. 计算机放样在钢结构应用,钢结构放样是什么,怎么操作?
  7. ms17-010 php版本,MS17-010补丁360版
  8. c++ 工厂模式简介和应用场景
  9. Python字符串总结大全
  10. 洛谷题单···(Python)
  11. es监控工具cerebro 安装使用教程
  12. N的阶乘递归与非递归
  13. [新手入门]微信公众号推文制作
  14. 计算机视觉最全专栏教程总结
  15. Hashtable的原理
  16. Linux系统安装IonCube的方法详解教程
  17. android ios av tv,iOS AVPlayerItem
  18. [jdk]jdk7,jdk8,jdk14 linux版本,windows版本下载
  19. 用友iuap技术平台:赋能企业业务快速创新,实现云原生自由
  20. win7 开启文件共享服务器,windows7如何共享文件夹_windows7怎样设置共享文件夹

热门文章

  1. win10中office文件图标显示白色不正常处理
  2. SharePoint Portal Server 2007 文档管理和用户管理的总结
  3. SharePoint Server 2007/MOSS的文件目录结构
  4. React 大数据可视化(大屏展示)解决方案
  5. Tlsr8258开发-小问题汇总
  6. YOLO3多gpu训练方法
  7. ng-app 和 ng-app=的区别
  8. bigdecimal 平均数_云函数 · – Bmob后端云
  9. 图像超分辨率重建之SRCNN
  10. 使用jspdf将网页转化成pdf(解决滚动条以外变成黑色问题及缺少echarts图表问题)