scrapy怎么讲内容写入csv
时间: 2024-05-23 19:10:23 浏览: 15
使用 Scrapy 将内容写入 CSV 文件非常简单。在 Scrapy 中,你可以使用 CSV 导出器来将数据输出到 CSV 文件中。
首先,需要在你的项目的 `settings.py` 文件中启用 CSV 导出器。在 `settings.py` 文件末尾添加以下代码:
```python
FEED_FORMAT = "csv"
FEED_URI = "output.csv"
```
上述代码会将输出格式设置为 CSV,并将输出文件命名为 `output.csv`。
接下来,在你的 Spider 中,你需要定义要写入 CSV 文件的数据。假设你的 Spider 输出一个包含电影名称、导演和评分的字典列表,你可以使用以下代码将其写入 CSV 文件中:
```python
import scrapy
class MySpider(scrapy.Spider):
name = "example.com"
start_urls = [
"http://www.example.com/1.html",
"http://www.example.com/2.html",
"http://www.example.com/3.html",
]
def parse(self, response):
# 解析电影数据
movie_data = [
{"name": "The Shawshank Redemption", "director": "Frank Darabont", "rating": 9.3},
{"name": "The Godfather", "director": "Francis Ford Coppola", "rating": 9.2},
{"name": "The Dark Knight", "director": "Christopher Nolan", "rating": 9.0},
]
# 写入 CSV 文件
for movie in movie_data:
yield movie
```
在上面的代码中,我们定义了一个包含电影数据的列表 `movie_data`,然后遍历该列表并使用 `yield` 关键字将每个电影写入 CSV 文件中。
当你运行 Spider 时,Scrapy 会自动将数据写入 CSV 文件 `output.csv` 中。如果你希望将数据写入不同的文件中,可以在 Spider 中使用 `FEED_URI` 参数来指定输出文件的路径和名称。例如:
```python
import scrapy
class MySpider(scrapy.Spider):
name = "example.com"
start_urls = [
"http://www.example.com/1.html",
"http://www.example.com/2.html",
"http://www.example.com/3.html",
]
custom_settings = {
"FEED_FORMAT": "csv",
"FEED_URI": "movies.csv"
}
def parse(self, response):
# 解析电影数据
movie_data = [
{"name": "The Shawshank Redemption", "director": "Frank Darabont", "rating": 9.3},
{"name": "The Godfather", "director": "Francis Ford Coppola", "rating": 9.2},
{"name": "The Dark Knight", "director": "Christopher Nolan", "rating": 9.0},
]
# 写入 CSV 文件
for movie in movie_data:
yield movie
```
上述代码中,我们使用 `custom_settings` 属性来定义 CSV 导出器的输出格式和文件路径,并将其设置为 `movies.csv`。