该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

Python爬小红书视频和图片(附下载)

无意间浏览进了小红书的一个页面,既然进来了那么不好意思,必须得搞一下

首先这里有个问题,本人对计算机视觉几乎小白,所以面对滑块验证只能靠碰撞获取cookie,后来发现没什么卵用,概率太低,而且这个页面几乎也不需要登录,如果遇到需要登录的情况,就手动进网站滑一下把header里的cookie复制出来即可(这种情况不一定会发生)

首先是小红书列表地址

listUrl = 'https://www.xiaohongshu.com/list?page={}'

获取到之后,分析HTML结构,获取列表内的每一个详情连接,这一步很简单,然后就是每个详情内部分为视频和图片集合这么两种形式 (文字也有懒得拿) 然后就需要走分支分析结构了,不能用同一种办法处理html

flagImage = html.select('.change-pic') flagVideo = html.select('.videoframe') if len(flagImage) > 0 : pass if len(flagVideo ) > 0: pass

下面遇到的问题就是,如果是图片的话,会有一个隐藏域的问题,无法获取到隐藏域内部的结构,这里还是靠selenium去操作JS将隐藏域改为可见(这里需要配置谷歌驱动,不知道可以看我上篇文章结尾: 快速跳转)

部分代码:

js = "document.getElementsByClassName('pages')[0].style.display='block'" driver.execute_script(js)

这些问题解决之后一路无阻了,地址都可以拿到了,只需要定义一个类继承threading.Thread,然后就开启内存飞起模式 (没做线程数限制,因为到有图片的时候会打开浏览器阻塞一次,这里可以加个最大线程,超过了就阻塞一会,记得加锁控制已使用线程数)

这里文件命名我都用uuid了,想要图,视频,文字能对应上的话就额外去扒一个标题命名就行了**(图片视频都放着一个文件夹里了,代码里分开放的)**

然后就是全部源码,喜欢点个赞+评论谢谢啦:

import threadingimport uuidimport requestsfrom bs4 import BeautifulSoupfrom selenium import webdriverhost = 'https://www.xiaohongshu.com'#热门笔记列表listUrl = 'https://www.xiaohongshu.com/list?page={}'#图片保存路径imagePath = 'C:\\Users\\xxx\Desktop\\image\\'#视频保存路径videoPath = 'C:\\Users\\xxx\Desktop\\video\\'headers = { "User-Agent":"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36", "Cookie":"xhsTrackerId=29a89907-528b-4579-c515-c48cf890b771; xhs_spses.5dde=*; extra_exp_ids=; smidV2=201909241648120dd9b8a70878445866ab3e7b672f642800415df33bcc7e780; xhs_spid.5dde=78028dad19b0ce62.1568772936.3.1569314896.1568787415.4b5c7c93-ebcb-4462-8581-60d1dd7d7ac9"}threadLock = threading.Lock()class downloadThread(threading.Thread): def __init__(self,url,name,type): threading.Thread.__init__(self) self.__url = url self.__name = uuid.uuid1() self.__type = type def run(self): if self.__type == 0: self.downloadVideo() else: self.downloadImage() # 多线程下载视频 def downloadVideo(self): video = requests.get(self.__url) with open(videoPath + f'{self.__name}.mp4', mode='wb') as f: f.write(video.content) # 多线程下载图片 def downloadImage(self): image = requests.get(self.__url) with open(imagePath + f'{self.__name}.jpg', mode='wb') as f: f.write(image.content)def imageUrlFormat(str): if checkNull(str): x = str.index('//') y = str.rindex('"') return str[x + 2:y] return ''#检验即将爬取的HTML是不是空的def checkNull(str): if len(str) == 0: return False if str.isspace(): return False return Truedef getInfo(html): #视频图片,文本信息都在这里 detailUrls = html.select('.image-wrapper') print(detailUrls) for url in detailUrls: detail = requests.get(host + url.get('href'),headers = headers) html = BeautifulSoup(detail.content, 'html.parser') #是否是图片? flagImage = html.select('.change-pic') if len(flagImage) > 0 : print('这个地址有图片' + host + url.get('href')) driver = webdriver.Chrome() driver.get(host + url.get('href')) #隐藏元素可见 js = "document.getElementsByClassName('pages')[0].style.display='block'" driver.execute_script(js) images = BeautifulSoup(driver.page_source,'html.parser').select('.inner') driver.quit() for imageUrl in images: if imageUrl.get('style') is not None: realUrl = imageUrlFormat(imageUrl.get('style')) down = downloadThread('http://'+realUrl,'',1) down.start() #是否有视频? flagVideo = html.select('.videocontent') if len(flagVideo) > 0 : print('这个地址有视频' + host + url.get('href')) videoUrl = flagVideo[0].get('src') if checkNull(videoUrl): down = downloadThread(videoUrl, '', 0) down.start()def htmlParse(url,page): body = requests.get(url.format(page),headers=headers) if body is not None and checkNull(body.content): html = BeautifulSoup(body.content,'html.parser') getInfo(html) passif __name__ == '__main__': # for index in range(1,50): # htmlParse(listUrl,index) htmlParse(listUrl,1)

小红书主页爬取_小红书数据爬取教程相关推荐

  1. python教程怎么抓起数据_介绍python 数据抓取三种方法

    三种数据抓取的方法正则表达式(re库) BeautifulSoup(bs4) lxml *利用之前构建的下载网页函数,获取目标网页的html,我们以https://guojiadiqu.bmcx.co ...

  2. 小红书主页爬取_小红书图片爬取下载-小红书图片爬取便携版

    小红书图片爬取是一款针对小红书图片下载软件.该软件虽然小巧,功能也不多,但是非常实用,该软件的使用不仅可以让用户快速浏览图片,还能快速爬取下载小红书某条链接中所有图片的软件.如有需要欢迎下载使用! 软 ...

  3. 小红书竞品分析_小红书产品分析报告

    最近美拍转型做兴趣社区,而小红书的兴趣社区一直以来都做的非常好,所以笔者希望通过分析小红书的成长历程,进而寻找一些可供美拍学习借鉴的地方,今天就简单地跟大家分享一下我做的小红书分析报告. 首先,给大家 ...

  4. qt爬取网页信息_豆瓣TOP250数据爬取

    一.问题描述 用python爬取网页数据是现在流行的一种快速获取数据的方法,简单快捷.最近小编通过教程学习完成了豆瓣TOP250数据的爬取.下面就简单介绍一下如何用python程序实现豆瓣网页信息的爬 ...

  5. python爬财务数据_同花顺财经-财务数据爬取思路详解-python爬虫

    同样的开头,近日,群友在讨论问题的时候发来一链接,询问如何抓取个股页面上财务指标,好奇心旺盛的博主立马打开网页研究了一番. 网址如下:http://stockpage.10jqka.com.cn/60 ...

  6. python爬取天天基金_分享天天基金数据爬取的Python脚本

    0 luckzpz - 像爱惜自己生命一样保护本金 赞同来自: 学习Python 2020-09-08 22:24 0 条评论 0 luckzpz - 像爱惜自己生命一样保护本金 赞同来自: 似乎文件 ...

  7. 用python爬小说_使用python+Scrapy爬小说

    图片来源网络 写在前面 最近在学习python,不得不说python真是好用,至少生成程序的速度快,语法也比较简单 ヾ(◍°∇°◍)ノ゙ 感觉很强大,之前怎么就没有想到学一下这个呢,如果大学抢课的时候 ...

  8. 京东app优惠券python抓取_如何使用fiddler抓取京东app的领券链接

    Fiddler不但能截获各种浏览器发出的HTTP请求, 也可以截获各种智能手机发出的HTTP/HTTPS请求.Fiddler能捕获IOS设备发出的请求,比如IPhone, IPad, MacBook. ...

  9. java分页抓取数据_网页分页数据抓取的几种方式

    相信所有个人网站的站长都有抓取别人数据的经历吧,目前抓取别人网站数据的方式无非两种方式: 一.使用第三方工具,其中最著名的是火车头采集器,在此不做介绍. 二.自己写程序抓取,这种方式要求站长自己写程序 ...

  10. 数据抓取工具有哪些-数据抓取工具免费推荐的有哪些

    随着社会的进步,科技的发展.不管是企业还是个人都清楚地明白了数据的重要性.不仅可以让我们掌握一手资源,同时还能通过数据更清楚竞争对手.同时也告别了手动复制粘贴的痛苦. 企业人员 通过爬取动态网页数据分 ...

最新文章

  1. matlab怎么跑.cpp程序,MATLAB编译cpp文件
  2. AlwaysOn 部分笔记及文档连接
  3. 高手教你PHP上传多张图片
  4. yoman不压缩html,使用Yeoman构建vuejs
  5. Jquery_JQuery之DataTables强大的表格解决方案
  6. Android 进程常驻(5)----开机广播的简单守护以及总结
  7. Create view failed with ORA-01031:insufficient privileges
  8. [ZJOI2006]超级麻将
  9. wordspress-作品展示主题Muiteer2.3.7开心版主题模板
  10. 基金指数温度怎么算_壁挂炉采暖费怎么算?从两千到八百,内行人教你别再花冤枉钱...
  11. CISA 称SolarWinds黑客或通过密码猜测攻陷目标,CISA 前局长受聘
  12. struts2 配置 自学练习 list jsp页输出 中文转英文首字母
  13. 一步步学Qt,第九天-QSTL与STL-Qvector,vector
  14. QQlook--QQ空间密码 相册密码查看工具 国庆版 V2.4
  15. 微信公众号查题搜题平台 功能齐全
  16. photoshop快速去掉图片背景颜色(白色背景)
  17. MySQL下载与安装教程(小白)
  18. 求两个三维向量的夹角(带正负)
  19. arm linux 工控,基于ARM和Linux通用工控平台设计 - ARM - 电子发烧友网
  20. 免费OCR图片文字识别小工具,一键提取图片中文字,支持多语言翻译和发票识别

热门文章

  1. Python3实现斐波那契数列.md
  2. 设计模式只是一把锤子,不要拿着到处去敲!
  3. Airflow基础架构简介
  4. 无约束低分辨率人脸识别综述一:用于低分辨率人脸识别的数据集
  5. 中国互联网办公地变迁史:你的公司为什么也搬家了?
  6. 计算机主机启动 显示器不动什么原因,主机开了电脑屏幕不亮怎么回事?电脑开机后显示器不亮的解决方案...
  7. 【FlashDB】第二步 FlashDB 移植 STM32L475 使用QSPI驱动外部 flash W25Q64之 SFUD 移植
  8. 颜值高的游戏键盘—HyperX Alloy Origins 60 霓虹粉游戏机械键盘
  9. 7-3 垃圾分类 (20分)
  10. 《AngularJS深度剖析与最佳实践》一 2.4 控制器