下面是使用Python爬虫爬取小红书的完整攻略:
步骤一:分析目标网站
在开始爬取之前,我们需要先了解目标网站的结构和数据。对于小红书,它是一个社交电商平台,主要的数据都是用户发布的笔记、评论和赞。我们可以先打开小红书网站,浏览一些笔记和评论,观察它们的网页结构,并使用浏览器开发者工具(F12)来查看网页源代码。
步骤二:选择合适的爬虫框架
目前比较流行的Python爬虫框架有很多,例如Scrapy、BeautifulSoup、Requests等。根据目标网站的特点,我们可以选择相应的爬虫框架。对于小红书的数据爬取,我们可以选择使用Requests和BeautifulSoup这两个库,因为它们比Scrapy更加轻量级,而且处理HTML文档也更加灵活。
步骤三:编写代码
在编写代码之前,我们需要先确定需要爬取哪些数据。对于小红书,我们可以爬取以下数据:
- 用户信息(昵称、头像、性别、城市、等级等);
- 笔记信息(标题、内容、发布时间、阅读数、点赞数、评论数等);
- 评论信息(评论内容、评论时间、点赞数等);
接下来,我们将分别用两个示例说明如何爬取上述数据:
示例一:爬取用户信息
import requests
from bs4 import BeautifulSoup
url = 'https://www.xiaohongshu.com/user/profile/5ff3f15a5a4b0d699b35bbae'
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.36'}
response = requests.get(url=url, headers=headers)
soup = BeautifulSoup(response.text, 'lxml')
nickname = soup.find('span', class_='nickname').text
gender = soup.find('span', class_='gender').text
city = soup.find('span', class_='location').text
level = soup.find('a', class_='level').find('span').text
print('昵称:', nickname)
print('性别:', gender)
print('城市:', city)
print('等级:', level)
执行以上代码,将会输出小红书用户“辰辰妈咪”的昵称、性别、城市和等级信息。
示例二:爬取笔记信息
import requests
from bs4 import BeautifulSoup
url = 'https://www.xiaohongshu.com/discovery/item/60677fbc00000000010132a8'
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.36'}
response = requests.get(url=url, headers=headers)
soup = BeautifulSoup(response.text, 'lxml')
title = soup.find('h1').text
content = soup.find('div', class_='note').text.strip()
publish_time = soup.find('span', class_='time').text
read_count = soup.find('span', class_='view-count').text
like_count = soup.find('span', class_='like-count').text
comment_count = soup.find('span', class_='comment-count').text
print('标题:', title)
print('内容:', content)
print('发布时间:', publish_time)
print('阅读数:', read_count)
print('点赞数:', like_count)
print('评论数:', comment_count)
执行以上代码,将会输出小红书笔记“颜控们看过来,这个口红号简直是女王的标配”相关的标题、内容、发布时间、阅读数、点赞数和评论数。
步骤四:处理反爬措施
在爬取过程中,目标网站会设置一些反爬措施,例如设置User-Agent、Cookie、验证码等,我们需要在代码中加入相应的处理方法来避免被反爬。示例如下:
import requests
from bs4 import BeautifulSoup
url = 'https://www.xiaohongshu.com/discovery/item/60677fbc00000000010132a8'
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.36'
}
cookies = {
'xhsTrackerId': '1620900089534088',
}
response = requests.get(url=url, headers=headers, cookies=cookies)
soup = BeautifulSoup(response.text, 'lxml')
# 处理反爬:验证码
if '请输入验证码' in soup.text:
print('需要输入验证码')
else:
title = soup.find('h1').text
content = soup.find('div', class_='note').text.strip()
publish_time = soup.find('span', class_='time').text
read_count = soup.find('span', class_='view-count').text
like_count = soup.find('span', class_='like-count').text
comment_count = soup.find('span', class_='comment-count').text
print('标题:', title)
print('内容:', content)
print('发布时间:', publish_time)
print('阅读数:', read_count)
print('点赞数:', like_count)
print('评论数:', comment_count)
以上代码中加入了对网页是否需要输入验证码的判断,如果需要输入,则需要手动输入验证码。此外,还可以通过模拟登录等方法避免被小红书反爬。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:使用Python爬虫爬取小红书完完整整的全过程 - Python技术站