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 = [''] #是限定在这个网站的范围之内爬虫
start_urls = ['/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抓取数据