Scrapy项目创建步骤及实例
时间: 2023-08-24 09:07:32 浏览: 98
Scrapy项目的创建步骤如下:
1. 安装Scrapy:在命令行窗口中,使用pip命令安装Scrapy。
2. 创建项目:在命令行窗口中,使用scrapy startproject命令创建一个新的Scrapy项目。
3. 创建Spider:在项目的spiders目录下,创建一个名为spider_name.py的Spider文件,并在其中定义如何爬取网站的行为。
4. 编写Item:在项目的items.py文件中定义Item的结构。
5. 编写Pipeline:在项目的pipelines.py文件中定义数据处理管道,如何处理从Spider获取到的数据。
6. 配置项目:在项目的settings.py文件中设置项目的配置,如User-Agent、请求头、代理等。
下面是一个简单的Scrapy实例,它可以爬取豆瓣电影Top250的电影名称和评分:
1. 安装Scrapy:在命令行窗口中,使用pip命令安装Scrapy。
2. 创建项目:在命令行窗口中,使用scrapy startproject命令创建一个新的Scrapy项目。
```
scrapy startproject douban_movie
```
3. 创建Spider:在项目的spiders目录下,创建一个名为douban_spider.py的Spider文件,并在其中定义如何爬取豆瓣电影Top250的网站的行为。
```python
import scrapy
class DoubanSpider(scrapy.Spider):
name = 'douban'
allowed_domains = ['movie.douban.com']
start_urls = ['https://movie.douban.com/top250']
def parse(self, response):
movies = response.xpath('//div[@class="hd"]')
for movie in movies:
title = movie.xpath('./a/span/text()').extract_first()
rating = movie.xpath('../div[@class="bd"]/div[@class="star"]/span[@class="rating_num"]/text()').extract_first()
yield {
'title': title,
'rating': rating
}
next_page = response.xpath('//span[@class="next"]/a/@href')
if next_page:
url = response.urljoin(next_page[0].extract())
yield scrapy.Request(url, callback=self.parse)
```
4. 编写Item:在项目的items.py文件中定义Item的结构。
```python
import scrapy
class DoubanMovieItem(scrapy.Item):
title = scrapy.Field()
rating = scrapy.Field()
```
5. 编写Pipeline:在项目的pipelines.py文件中定义数据处理管道,如何处理从Spider获取到的数据。
```python
import pymongo
class DoubanMoviePipeline(object):
def __init__(self, mongo_uri, mongo_db):
self.mongo_uri = mongo_uri
self.mongo_db = mongo_db
@classmethod
def from_crawler(cls, crawler):
return cls(
mongo_uri=crawler.settings.get('MONGO_URI'),
mongo_db=crawler.settings.get('MONGO_DATABASE', 'items')
)
def open_spider(self, spider):
self.client = pymongo.MongoClient(self.mongo_uri)
self.db = self.client[self.mongo_db]
def close_spider(self, spider):
self.client.close()
def process_item(self, item, spider):
self.db['douban_movie'].insert_one(dict(item))
return item
```
6. 配置项目:在项目的settings.py文件中设置项目的配置,如User-Agent、请求头、代理等。
```python
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'
ROBOTSTXT_OBEY = False
DOWNLOAD_DELAY = 1
ITEM_PIPELINES = {
'douban_movie.pipelines.DoubanMoviePipeline': 300,
}
MONGO_URI = 'mongodb://localhost:27017/'
MONGO_DATABASE = 'douban_movie'
```
以上就是一个简单的Scrapy实例的创建步骤。
阅读全文