使用scrapy爬取豆瓣top250,将数据整合成json格式存入mongo
时间: 2023-07-24 12:33:22 浏览: 241
实践Python的爬虫框架Scrapy来抓取豆瓣电影TOP250
5星 · 资源好评率100%
好的,这里是一个简单的示例代码,可以参考一下:
```python
import scrapy
import pymongo
class DoubanTop250Spider(scrapy.Spider):
name = 'douban_top250'
start_urls = ['https://movie.douban.com/top250']
def parse(self, response):
# 遍历每个电影条目
for movie in response.css('.item'):
# 解析电影信息
title = movie.css('.title::text').get()
rating = movie.css('.rating_num::text').get()
year = movie.css('.bd p::text').re_first(r'\d{4}')
directors = movie.css('.bd p::text').re(r'导演: (.+?) ')
stars = movie.css('.bd p::text').re(r'主演: (.+?) ')
# 将电影信息存入 MongoDB
self.save_to_mongo(title, rating, year, directors, stars)
# 获取下一页的链接,递归调用 parse 方法
next_page = response.css('.next a::attr(href)').get()
if next_page:
yield response.follow(next_page, self.parse)
def save_to_mongo(self, title, rating, year, directors, stars):
# 连接 MongoDB
client = pymongo.MongoClient('mongodb://localhost:27017/')
db = client['douban']
collection = db['top250']
# 构造电影数据
movie = {
'title': title,
'rating': rating,
'year': year,
'directors': directors,
'stars': stars
}
# 插入数据
collection.insert_one(movie)
```
在这个示例中,我们定义了一个名为 `DoubanTop250Spider` 的 Scrapy 爬虫,在 `parse` 方法中遍历豆瓣电影 top250 页面中的每个电影条目,使用 CSS 选择器解析电影信息,并将数据存入 MongoDB 数据库中。
具体来说,我们使用了 PyMongo 库连接到本地 MongoDB 数据库,定义了名为 `douban` 的数据库和名为 `top250` 的集合,构造了电影数据,并使用 `insert_one` 方法将数据插入集合中。
除此之外,我们还使用了 Scrapy 的 `response.follow` 方法获取下一页的链接,并递归调用 `parse` 方法,直到遍历完所有电影条目。
阅读全文