Scrapy是一个Python的爬虫框架,用于快速开发和部署Web爬虫。它提供了一套完整的爬虫工具,包括爬虫的调度、数据下载、数据处理和存储等功能,同时也支持多线程、分布式和异步IO等高级特性。
以下是Scrapy的用法介绍:
1.安装Scrapy
Scrapy可以通过pip安装,命令如下:
pip install scrapy
2.创建Scrapy项目
使用以下命令创建一个Scrapy项目:
scrapy startproject douban
其中 douban 为项目名
3.创建Spider
使用以下命令创建一个Spider:
scrapy genspider spider_name domain_name
其中,spider_name
是Spider名称,domain_name
是要爬取的域名。
例子:
scrapy genspider douban_movie https://movie.douban.com/top250
创建好Spider之后,需要在Spider中定义start_urls和parse方法,其中start_urls是要爬取的起始URL,parse方法是用来处理下载的数据。
在Spider中定义start_urls和parse方法:
import scrapy class DoubanMovieSpider(scrapy.Spider): name = 'douban_movie' allowed_domains = ['movie.douban.com'] start_urls = ['https://movie.douban.com/top250'] def parse(self, response): for movie in response.xpath('//div[@class="hd"]'): yield { 'title': movie.xpath('.//a/span[1]/text()').extract_first(), 'rating': movie.xpath('../div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract_first(), 'link': movie.xpath('.//a/@href').extract_first() }
4.配置Scrapy
在settings.py
中设置下载延迟和User-Agent:
DOWNLOAD_DELAY = 1 USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
5. 运行Scrapy
使用以下命令运行Scrapy:
scrapy crawl douban_movie -o douban_movie.csv
其中,douban_movie
是Spider名称,douban_movie.csv
是输出文件名称。
6.数据处理和存储
可以使用Scrapy提供的Item和Pipeline来处理和存储数据。在items.py
中定义数据项:
import scrapy class DoubanMovieItem(scrapy.Item): title = scrapy.Field() rating = scrapy.Field() link = scrapy.Field()
在pipelines.py
中定义Pipeline:
import csv class DoubanMoviePipeline(object): def __init__(self): self.file = open('douban_movie.csv', 'w', encoding='utf-8', newline='') self.writer = csv.writer(self.file) self.writer.writerow(['title', 'rating', 'link']) def process_item(self, item, spider): self.writer.writerow([item['title'], item['rating'], item['link']]) return item def close_spider(self, spider): self.file.close()
在settings.py
中启用Pipeline:
ITEM_PIPELINES = { 'douban.pipelines.DoubanMoviePipeline': 300, }
通过以上步骤,就可以使用Scrapy爬取豆瓣电影Top250,并将结果保存到CSV文件中。