本期我们来进行实战,爬取小红书的相关数据导入到excel中,后续可进行些数据分析,今后或者已经在运营小红书的小伙伴应该比较喜欢这些数据。今天我们的主角是DrissionPage,相对于之前介绍的selenium省去了很多的配置,直接安装了就能使用。
DrissionPage 是一个基于 python 的网页自动化工具。它既能控制浏览器,也能收发数据包,还能把两者合而为一。可兼顾浏览器自动化的便利性和 requests 的高效率。它功能强大,内置无数人性化设计和便捷功能。它的语法简洁而优雅,代码量少,对新手友好。
使用pip进行安装
pip install DrissionPage
控制浏览器事例
from DrissionPage import ChromiumPage
# 创建页面对象,并启动或接管浏览器
page = ChromiumPage()
# 跳转到登录页面
page.get('https://gitee.com/login')
# 定位到账号文本框,获取文本框元素
ele = page.ele('#user_login')
# 输入对文本框输入账号
ele.input('您的账号')
# 定位到密码文本框并输入密码
page.ele('#user_password').input('您的密码')
# 点击登录按钮
page.ele('@value=登 录').click()
获取页面数据事例
from DrissionPage import SessionPage
# 创建页面对象
page = SessionPage()
# 爬取3页
for i in range(1, 4):
# 访问某一页的网页
page.get(f'https://gitee.com/explore/all?page={i}')
# 获取所有开源库<a>元素列表
links = page.eles('.title project-namespace-path')
# 遍历所有<a>元素
for link in links:
# 打印链接信息
print(link.text, link.link)
下面我们来看看如何利用DrissionPage爬取小红书相关数据。
首先,我们先登录小红书 写一个登陆的函数,第一次运行时留几秒钟进行扫码登录。
def login():
sign_in_page = ChromiumPage()
sign_in_page.get('https://www.xiaohongshu.com')
print("请扫码登录")
# 第一次运行需要扫码登录
time.sleep(10)
登录后我们通过关键字进行搜索相关小红书店铺
def search(keyword):
global page
page = ChromiumPage()
page.get(f'https://www.xiaohongshu.com/search_result?keyword={keyword}&source=web_search_result_notes')
右击检查源代码,我们发现所有的内容都包含在 class=“feeds-container”中,我们利用page.eles获取所有的元素。
def crawler():
container = page.ele('.feeds-container')
sections = container.eles('.note-item')
for section in sections:
name = section('.name').text
count= section('.count').text
footer = section.ele('.footer', timeout=0)
url = footer.ele('tag:a', timeout=0).link
title= footer.ele('tag:span', timeout=0).text
最后把查询到的内容通过pandas导入到excel中。
#将上面的查询结果append到datalist
data = DataFrame(datalist)
df = pd.DataFrame(data)
# 删除重复行
df = df.drop_duplicates()
df.to_excel('%s.xlsx' %keyword, index=False)
运行结果如下:
具体的源码我已放到了面包多中
https://mbd.pub/o/bread/ZpWUlZ9r 敢兴趣的小伙伴可以去看看
限时福利:关注公众号:小妖同学学习记 ,点击“与我联系” 添加微信可直接获取相关源码。