def中如何使用协程方式爬取小红书数据
发表于:2025-01-29 作者:千家信息网编辑
千家信息网最后更新 2025年01月29日,小编给大家分享一下def中如何使用协程方式爬取小红书数据,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!小红书数据采集教程,使用协程方式爬取小红书 热门页 下的数据from geven
千家信息网最后更新 2025年01月29日def中如何使用协程方式爬取小红书数据
小编给大家分享一下def中如何使用协程方式爬取小红书数据,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!
小红书数据采集教程,使用协程方式爬取小红书 热门页 下的数据
from gevent import monkey# 猴子补丁monkey.patch_all()from gevent.pool import Poolfrom queue import Queueimport requestsimport jsonfrom lxml import etreeclass RedBookSpider(): """小红书爬虫""" def __init__(self, pages): """初始化""" self.url = 'https://www.xiaohongshu.com/web_api/sns/v2/trending/page/brand?page={}&page_size=20' self.headers = { "User-Agent": "Mozilla/5.0 (Linux; Android 5.0; SM-G900P Build/LRX21T) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Mobile Safari/537.36" } self.url_queue = Queue() self.pool = Pool(5) self.pages = pages pass def get_url(self): """获取url""" for page in range(1, self.pages): url = self.url.format(page) self.url_queue.put(url) def save_data(self, items): """数据保存""" with open('./redbook.txt', 'a', encoding='utf-8') as f: f.write(str(items) + '\n') def deal_detail(self, detail_url, items, data): """详情页内容提取""" resp = requests.get(url=detail_url, headers=self.headers) eroot = etree.HTML(resp.text) items['fans'] = eroot.xpath('//div[@data-v-64bff0ce]/div[@class="extra"]/text()') items['articles'] = eroot.xpath('//div/span[@class="stats"]/text()') items['introduce'] = eroot.xpath('//div[@class="desc"]/div[@class="content"]/text()') items['detail_url'] = detail_url items['image'] = data['page_info']['banner'] print(items) self.save_data(items) def deal_response(self, resp): """数据提取""" dict_data = json.loads(resp.text) dict_data = dict_data['data'] for data in dict_data: items = {} items['name'] = data['page_info']['name'] detail_url = 'https://www.xiaohongshu.com/page/brands/' + data['page_id'] self.deal_detail(detail_url, items, data) def execute_task(self): """处理响应""" url = self.url_queue.get() resp = requests.get(url=url, headers=self.headers) # print(resp.text) self.deal_response(resp) self.url_queue.task_done() def execute_task_finished(self, result): """任务回调""" self.pool.apply_async(self.execute_task, callback=self.execute_task_finished) def run(self): """启动程序""" self.get_url() for i in range(3): self.pool.apply_async(self.execute_task, callback=self.execute_task_finished) self.url_queue.join() passif __name__ == '__main__': user = RedBookSpider(4) # 需要爬取几页数据 就改为多少 user.run()
看完了这篇文章,相信你对"def中如何使用协程方式爬取小红书数据"有了一定的了解,如果想了解更多相关知识,欢迎关注行业资讯频道,感谢各位的阅读!
数据
小红
方式
篇文章
热门
任务
内容
完了
教程
数据采集
更多
爬虫
猴子
知识
程序
行业
补丁
详情
资讯
资讯频道
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
国家开通法律法规数据库
软件开发费用计量
win服务器如何防护
哪个数据库允许一个实例
佛山网络安全培训学校哪家好
商用的数据库
中国公安大学网络安全与执法考研
畅捷通app无缝对接数据库
磷石膏检验服务数据库建设
国际比较常用的数据库不包括
松江区海航数据库服务直销价
初中生网络安全作业
软件开发实施部
上海乐顾网络技术公司
网络安全领域重点检查
香港服务器备份多久更新
农村中小学网络安全教育
会有警察检查网络安全吗
5g网络技术负责国
宝鸡网络安全宣传周总结
win7系统可以装数据库吗
商用的数据库
双世宠妃小说软件开发
数据库系统视图题
保密和网络安全相关规定
电脑服务器怎么做
医院网络安全工作考核指标
普陀区品牌软件开发质量保障
java加载数据库的方法
服务器散热不好会导致黑屏吗