一、准备工作
在开始爬取小红书数据之前,需要安装相关的Python库。主要需要安装以下库:
pip install scrapy
此外,还需要安装MongoDB,并启动MongoDB服务。
二、获取小红书Cookie
在使用爬虫爬取小红书数据之前,需要获取用户的Cookie。可以通过登录小红书网站,并使用浏览器开发者工具获取Cookie。
三、编写爬虫代码
接下来,我们来编写爬虫代码。首先,创建一个名为redbook_spider.py的文件,代码如下:
import scrapy
import json
from redbook.items import RedbookItem
class RedbookSpider(scrapy.Spider):
name = "redbook"
allowed_domains = ["www.xiaohongshu.com"]
start_urls = ["https://www.xiaohongshu.com/discovery/item/60bc80330000000001006be3"]
def start_requests(self):
headers = {
"cookie": "***" # 将***替换成你的Cookie
}
for url in self.start_urls:
yield scrapy.Request(url, headers=headers)
def parse(self, response):
item = RedbookItem()
data = json.loads(response.text)
item["title"] = data["data"]["title"]
item["content"] = data["data"]["desc"]
item["likes"] = data["data"]["likes"]
item["comments"] = data["data"]["comments_count"]
item["shares"] = data["data"]["shares_count"]
yield item
爬虫代码主要包括以下几个部分:
- 导入相关的库,包括scrapy和json。
- 定义一个名为RedbookSpider的类,继承自scrapy.Spider。
- 设置爬虫的名称(name)和允许的域名(allowed_domains),以及爬虫的起始URL(start_urls)。
- 实现start_requests方法,在请求头中添加Cookie,向起始URL发送请求。
- 实现parse方法,在响应中解析出需要的数据,包括标题、内容、点赞数、评论数和分享数,并存入RedbookItem对象中。
四、编写数据存储代码
接下来,我们需要将爬取到的数据存储到MongoDB数据库中。创建一个名为mongo_pipeline.py的文件,代码如下:
from pymongo import MongoClient
class MongoPipeline(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_DB")
)
def open_spider(self, spider):
self.client = 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):
collection = self.db["redbook"]
data = {
"title": item["title"],
"content": item["content"],
"likes": item["likes"],
"comments": item["comments"],
"shares": item["shares"]
}
collection.insert_one(data)
return item
数据存储代码主要包括以下几个部分:
- 导入MongoClient。
- 定义一个名为MongoPipeline的类。
- 实现__init__方法,初始化MongoDB连接。
- 实现from_crawler方法,从Settings中获取MongoDB连接参数。
- 实现open_spider方法,在爬虫启动时打开MongoDB连接。
- 实现close_spider方法,在爬虫结束时关闭MongoDB连接。
- 实现process_item方法,将RedbookItem对象中的数据存储到MongoDB数据库中。
五、设置Scrapy配置
最后一步是将爬虫和数据存储代码与Scrapy框架结合起来。在settings.py文件中添加以下配置信息:
ITEM_PIPELINES = {
"redbook.pipelines.MongoPipeline": 300
}
MONGO_URI = "mongodb://localhost:27017/"
MONGO_DB = "redbook"
主要包括以下几个配置项:
- ITEM_PIPELINES:设置数据处理流程,此处设置为使用MongoPipeline处理。
- MONGO_URI:设置MongoDB连接地址。
- MONGO_DB:设置MongoDB数据库名称。
六、启动爬虫
现在,就可以启动爬虫了。在命令行中进入项目根目录,输入以下命令:
scrapy crawl redbook
等待爬虫完成数据爬取和存储操作即可。