python爬虫之利用scrapy框架抓取新浪天气数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012535605/article/details/80537257

scrapy中文官方文档:点击打开链接

Scrapy是Python开发的一个快速、高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。Scrapy用途广泛,可以用于数据挖掘、监测和自动化测试, Scrapy吸引人的地方在于它是一个框架,任何人都可以根据需求方便的修改。它也提供了多种类型爬虫的基类,如BaseSpider、sitemap爬虫等,最新版本又提供了web2.0爬虫的支持。

1.创建项目

在开始爬取之前,您必须创建一个新的Scrapy项目。 进入您打算存储代码的目录中,运行下列命令:

scrapy startproject day1


2.定义item

    Item 是保存爬取到的数据的容器;其使用方法和python字典类似, 并且提供了额外保护机制来避免拼写错误导致的未定义字段错误

import scrapy


class Day1Item(scrapy.Item):
    city = scrapy.Field()
    temperature = scrapy.Field()
    date = scrapy.Field() 
    pass

3.编写爬虫

Spider是用户编写用于从单个网站(或者一些网站)爬取数据的类。其包含了一个用于下载的初始URL,如何跟进网页中的链接以及如何分析页面中的内容, 提取生成 item 的方法。


在spiders中创建一个名为sinaweather.py文件

import scrapy
from day1.items import Day1Item    # day1是文件夹的名,Day1Item是items.py中的类class名
class weatherSpider(scrapy.spiders.Spider):   #weatherSpider是自定义的名
    name = "sina"       #sina是自定义的名
    allowed_domains = ['sina.com.cn']   #sina.com.cn是限定在这个网站的范围之内爬虫
    start_urls = ['http://weather.sina.com.cn/xian']  #开始爬虫的网址
    def parse(self, response):
        item= Day1Item()
        item['city'] = response.xpath('//*[@class="slider_ct_name"]/text()').extract()
        item['temperature']=response.xpath('//*[@class="wt_fc_c0_i_temp"]/text()').extract()
        item['date']=response.xpath('//*[@class="wt_fc_c0_i_date"]/text()').extract()
        return item

4.修改配置文件(settings)

BOT_NAME = 'day1'  

SPIDER_MODULES = ['day1.spiders']
NEWSPIDER_MODULE = 'day1.spiders'

FEED_EXPORT_ENCODING = 'utf-8'     

5.执行爬虫命令

在命令行输入如下命令:

scrapy crawl sina -o test.json

我们看到命令行出现如下内容,说明爬虫成功了

然后我们回到根目录下,看我们刚保存的test.json文件,我们看到如下json内容,说明需要爬到的数据被保存到test.json文件中


至此第一个scrapy爬虫示例基本实现,后续会更深入的学习如何利用scrapy抓取数据

猜你喜欢

转载自blog.csdn.net/u012535605/article/details/80537257