帮我用python写一个小红书爬虫框架,
时间: 2023-08-28 22:03:51 浏览: 247
好的,以下是一个基本的小红书爬虫框架的示例代码,使用 Python 语言编写:
```python
import requests
import time
import json
class XiaohongshuSpider:
def __init__(self, keyword):
self.keyword = keyword
self.url = 'https://www.xiaohongshu.com/api/sns/v1/search/note'
self.headers = {
'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',
'Referer': 'https://www.xiaohongshu.com/search/result'
}
self.session = requests.session()
def get_data(self, page):
params = {
'keyword': self.keyword,
'page': page,
'sort': 'general',
'source': 'search',
'type': 'note'
}
response = self.session.get(self.url, headers=self.headers, params=params)
return response.json()
def parse_data(self, data):
for note in data['data']:
yield {
'id': note['id'],
'title': note['title'],
'content': note['desc'],
'likes': note['likes'],
'comments': note['comments'],
'shares': note['shares'],
'user_id': note['user']['id'],
'user_name': note['user']['nickname'],
'user_gender': note['user']['gender']
}
def run(self):
page = 1
while True:
data = self.get_data(page)
notes = list(self.parse_data(data))
if len(notes) == 0:
break
for note in notes:
print(note)
page += 1
time.sleep(1)
if __name__ == '__main__':
spider = XiaohongshuSpider('美妆')
spider.run()
```
在这个示例代码中,我们使用了 requests 库来发送 HTTP 请求,使用了 json 库来解析返回的 JSON 数据。在类的构造方法中,我们传入了一个关键词参数,表示要搜索的内容。然后,我们定义了一个 get_data 方法,用于发送请求并获取数据。这个方法中,我们使用了 requests 库的 get 方法来发送 GET 请求,并传入了一些查询参数。接着,我们定义了一个 parse_data 方法,用于解析数据。这个方法中,我们遍历了返回的 JSON 数据,并使用 yield 语句将解析后的数据逐个返回。最后,我们定义了一个 run 方法,用于运行爬虫。在这个方法中,我们使用一个 while 循环来不断发送请求并解析数据,直到数据全部获取完毕。在每次获取数据后,我们都会先解析数据,然后再使用 for 循环逐个输出解析后的数据。为了防止频繁请求被封 IP,我们还使用了 time 库来延迟一秒钟。
阅读全文