1.项目准备:网站地址:http://quanzhou.tianqi.com/

2.创建编辑Scrapy爬虫:

scrapy startproject weather

scrapy genspider HQUSpider quanzhou.tianqi.com

项目文件结构如图:

3.修改Items.py:

4.修改Spider文件HQUSpider.py:

(1)先使用命令:scrapy shell http://quanzhou.tianqi.com/   测试和获取选择器:

(2)试验选择器:打开chrome浏览器,查看网页源代码:

(3)执行命令查看response结果:

(4)编写HQUSpider.py文件:

# -*- coding: utf-8 -*-

import scrapy

from weather.items import WeatherItem

class HquspiderSpider(scrapy.Spider):

name = ‘HQUSpider‘

allowed_domains = [‘tianqi.com‘]

citys=[‘quanzhou‘,‘datong‘]

start_urls = []

for city in citys:

start_urls.append(‘http://‘+city+‘.tianqi.com/‘)

def parse(self, response):

subSelector=response.xpath(‘//div[@class="tqshow1"]‘)

items=[]

for sub in subSelector:

item=WeatherItem()

cityDates=‘‘

for cityDate in sub.xpath(‘./h3//text()‘).extract():

cityDates+=cityDate

item[‘cityDate‘]=cityDates

item[‘week‘]=sub.xpath(‘./p//text()‘).extract()[0]

item[‘img‘]=sub.xpath(‘./ul/li[1]/img/@src‘).extract()[0]

temps=‘‘

for temp in sub.xpath(‘./ul/li[2]//text()‘).extract():

temps+=temp

item[‘temperature‘]=temps

item[‘weather‘]=sub.xpath(‘./ul/li[3]//text()‘).extract()[0]

item[‘wind‘]=sub.xpath(‘./ul/li[4]//text()‘).extract()[0]

items.append(item)

return items

(5)修改pipelines.py我,处理Spider的结果:

# -*- coding: utf-8 -*-

# Define your item pipelines here

#

# Don‘t forget to add your pipeline to the ITEM_PIPELINES setting

# See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html

import time

import os.path

import urllib2

import sys

reload(sys)

sys.setdefaultencoding(‘utf8‘)

class WeatherPipeline(object):

def process_item(self, item, spider):

today=time.strftime(‘%Y%m%d‘,time.localtime())

fileName=today+‘.txt‘

with open(fileName,‘a‘) as fp:

fp.write(item[‘cityDate‘].encode(‘utf-8‘)+‘\t‘)

fp.write(item[‘week‘].encode(‘utf-8‘)+‘\t‘)

imgName=os.path.basename(item[‘img‘])

fp.write(imgName+‘\t‘)

if os.path.exists(imgName):

pass

else:

with open(imgName,‘wb‘) as fp:

response=urllib2.urlopen(item[‘img‘])

fp.write(response.read())

fp.write(item[‘temperature‘].encode(‘utf-8‘)+‘\t‘)

fp.write(item[‘weather‘].encode(‘utf-8‘)+‘\t‘)

fp.write(item[‘wind‘].encode(‘utf-8‘)+‘\n\n‘)

time.sleep(1)

return item

(6)修改settings.py文件,决定由哪个文件来处理获取的数据:

(7)执行命令:scrapy crawl HQUSpider

到此为止,一个完整的Scrapy爬虫就完成了。

python爬虫天气实例scrapy_2017.08.04 Python网络爬虫之Scrapy爬虫实战二 天气预报...相关推荐

  1. python爬虫天气实例_Python爬虫 --- 2.4 Scrapy之天气预报爬虫实践

    目的 写一个真正意义上一个爬虫,并将他爬取到的数据分别保存到txt.json.已经存在的mysql数据库中. 目标分析: 数据的筛选: 我们使用chrome开发者工具,模拟鼠标定位到相对应位置: 可以 ...

  2. python爬虫天气实例scrapy_python爬虫之利用scrapy框架抓取新浪天气数据

    scrapy中文官方文档:点击打开链接 Scrapy是Python开发的一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scrapy用途广泛,可以用于数据挖掘 ...

  3. python自动抓取网管软件的数据_python实现scrapy爬虫每天定时抓取数据的示例代码...

    1. 前言. 1.1. 需求背景. 每天抓取的是同一份商品的数据,用来做趋势分析. 要求每天都需要抓一份,也仅限抓取一份数据. 但是整个爬取数据的过程在时间上并不确定,受本地网络,代理速度,抓取数据量 ...

  4. python项目开发实例-有趣的十个Python实战项目,让你瞬间爱上Python!

    前言 Python 是一种极具可读性和通用性的编程语言.Python 这个名字的灵感来自于英国喜剧团体 Monty Python,它的开发团队有一个重要的基础目标,就是使语言使用起来很有趣.Pytho ...

  5. python脚本编程实例_C程序调用Python脚本的例子

    下面我们一起来看看关于C程序调用Python脚本的例子,如果你对此有兴趣的希望此教程对各位同学会有所帮助. 代码如下 复制代码 #include int main(){ PyObject * g_pM ...

  6. 普通爬虫有啥意思,我写了个通用Scrapy爬虫

    大家好,我是Kuls.今天是来自读者剑南的投稿. 除了钱,大家还比较喜欢什么?当然是全能.万能和通用的人或事物啦,例如:全能.什么都会的员工.万能钥匙.通用爬虫等等.今天我们学习Scrapy通用爬虫, ...

  7. python爬虫天气实例_Python爬虫实例扒取2345天气预报

    寒假里学习了一下python爬虫,使用最简单的方法扒取需要的天气数据,对,没听错,最简单的方法.甚至没有一个函数封装.. 网址:http://tianqi.2345.com/wea_history/5 ...

  8. python爬虫简单实例-最简单的Python爬虫案例,看得懂说明你已入门,附赠教程

    原标题:最简单的Python爬虫案例,看得懂说明你已入门,附赠教程 这是最简单的Python爬虫案例,如果你能看懂,那么请你保持信心,因为你已经入门Python爬虫,只要带着信心和努力,你的技术能力在 ...

  9. python零基础实例-零基础学习Python开发练习100题实例(1)

    零基础学习Python开发练习100题实例(1) 2018-02-25 09:37:59 2864浏览 1.题目:有四个数字:1.2.3.4,能组成多少个互不相同且无重复数字的三位数?各是多少? 程序 ...

最新文章

  1. 使用进度条,让Python学习更加轻松快乐吧
  2. 基于Keras搭建cifar10数据集训练预测Pipeline
  3. 中年职场危机,这是我看过最靠谱的建议
  4. Vijos p1484 ISBN号码
  5. H3C 计算子网内可用主机地址数
  6. Openfire插件开发
  7. cuda合并访问的要求_【CUDA 基础】4.3 内存访问模式
  8. 超全必读!NLP 事件抽取综述(下)
  9. Java驼峰原则_Java:标识符规则_驼峰原则
  10. android mvp框架基类,Android MVP架构模式基类封装
  11. java物流项目功能介绍_JAVAEE——BOS物流项目13:Quartz概述、创建定时任务、使用JavaMail发送邮件、HighCharts概述、实现区域分区分布图...
  12. java成绩五分制转换_绩点五分制换算(5分制的绩点对照表)
  13. php 邮箱附件 大小限制,不能作为电子邮件的附件发送的是什么?
  14. [我一直想看到的文章 好好保存赏析]微软、英特尔和摩根的比较
  15. Java可以运行javac不能运行
  16. 国标28181:什么是SIP协议
  17. 怎样度过自己的一生?
  18. 微信免资金代金券(V3版)java代码
  19. l3119双闪_爱普生打印机两个指示灯一直在闪是为什么
  20. 「自动化」聊起来简单,做起来难 | 谈效风生

热门文章

  1. MogDB/openGauss 生态工具-MTK(Migration ToolKit) 数据库迁移
  2. 今晚直播丨Oracle数据库SQL执行计划的取得和解析
  3. 如何优雅地添加MGR节点?
  4. 主干开发前要知道的,4错误认识+3优势
  5. GaussDB(for MySQL)如何快速创建索引?华为云数据库资深架构师为您揭秘
  6. OAuth:每次授权暗中保护你的那个“MAN”
  7. 轻松云上揽胜中华,靠的就是这份聪明的“地图”!
  8. 用户登录python_python用户登录系统
  9. Docker存储卷基本操作
  10. A Style-Based Generator Architecture for Generative Adversarial Networks---阅读笔记