简述

爬取所有的中大微博的信息。包括文本文件和视频文件,亦或是是图片文件。

代码实现

from gevent import monkey
import geventmonkey.patch_all(select=False)
import selenium
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import os
import shutil
import requestsdef scroll():try:browser.find_element_by_xpath('//div[@class="W_pages"]')except:return Falsereturn Truedef checkfile(filepath):if os.path.exists(filepath):shutil.rmtree(filepath)os.mkdir(filepath)def writeText(text, filepath):with open(os.path.join(filepath, 'text.txt'), 'w', encoding='utf-8', errors='ignore') as f:f.write(text)def writeMedia(mediaurl, filepath, name, vedio=False):if not vedio:form = os.path.splitext(mediaurl)[-1]else:form = '.mp4'with open(os.path.join(filepath, name + form), 'wb') as f:f.write(requests.get(mediaurl).content)if __name__ == '__main__':options = webdriver.ChromeOptions()options.binary_location = r"D:\Software\Chrome\Application\chrome.exe"browser = webdriver.Chrome(chrome_options=options)url = 'https://weibo.com/u/1892723783?is_all=1'browser.get(url)time.sleep(40)WB_innerwrap = browser.find_element_by_css_selector('div[class="WB_innerwrap"]')# 总共的数量td_last_number = int(WB_innerwrap.find_elements_by_tag_name('td')[-1].find_element_by_class_name("W_f16").text)print("微博总数:", td_last_number)file_path = './weibo'checkfile(file_path)medialist = []MAXLEN = 50for TIMES in range(221):while not scroll():browser.execute_script("window.scrollBy(0,10000)")time.sleep(5)WB_feed = browser.find_element_by_css_selector('div[module-type="feed"]')feed_content = WB_feed.find_elements_by_xpath('//div[@node-type="feed_content"]')for feed_list_item in feed_content:print("#### BEGIN", td_last_number)WB_detail = feed_list_item.find_element_by_class_name('WB_detail')WB_text = WB_detail.find_element_by_css_selector('div[node-type="feed_list_content"]').text# 创建文件夹feed_list_item_file_path = os.path.join(file_path, str(td_last_number))checkfile(feed_list_item_file_path)writeText(WB_text, feed_list_item_file_path)td_last_number -= 1try:WB_media_box = WB_detail.find_element_by_class_name('media_box')imgs = WB_media_box.find_elements_by_tag_name('img')for i, img in enumerate(imgs):# print('image ', i, img.get_attribute('src'))medialist.append(gevent.spawn(writeMedia, img.get_attribute('src'), feed_list_item_file_path,'image ' + str(i)))videos = WB_media_box.find_elements_by_tag_name('video')for video in videos:# print('video', video.get_attribute('src'))medialist.append(gevent.spawn(writeMedia, video.get_attribute('src'), feed_list_item_file_path,'veido', True))except:passif len(medialist) >= MAXLEN:gevent.joinall(medialist)medialist = []W_pages = browser.find_element_by_xpath('//div[@class="W_pages"]')W_pages.find_elements_by_tag_name('a')[-1].click()if len(medialist):gevent.joinall(medialist)medialist = []else:time.sleep(5)

爬取某一微博用户所有文本文件或者是视频图片文件相关推荐

  1. Scrapy爬取新浪微博移动版用户首页微博

    前言: 本次爬取的是新浪微博移动端(https://m.weibo.cn/),爬取的数据是用户微博首页的第一条微博(如下图),包括文字内容.转发量.评论数.点赞数和发布时间,还有用户名和其所在地区(后 ...

  2. scrapy 爬取新浪微博 的微博列表及微博内容

    代码地址:GitHub 参考:博客 通过scrapy框架爬取指定账号的信息和微博 截止到目前(2019年01月15日)的微博账号粉丝排名: 爬取方法:提取网页版的微博接口 1.重写start_requ ...

  3. Pyppeteer爬取移动端微博评论区简单案例

    在简单学习了Pyppeteer之后,就想利用其来实现一个爬取实战来巩固知识,也是为了做点东西,让学的东西不那么空洞. 然后选取了微博评论区进行爬取. 但是在复制网页端的微博的节点的Selector并进 ...

  4. python爬取抖音用户数据的单位是_爬取并分析一下B站的最热视频排行榜,看看大家都喜欢看什么视频...

    前言 现在大家的生活中,已经越来越离不开B站了,2020年的第一季度,B站月活跃用户达到了1.72亿,日活跃用户也已经突破了5000万个用户.源源不断的流量让B站的up主们也是粉丝数目不断暴涨,百万粉 ...

  5. python爬取微博评论并做词频分析_爬取李子柒微博评论并分析

    爬取李子柒微博评论并分析 微博主要分为网页端.手机端和移动端.微博网页版反爬太厉害,因此选择爬取手机端. 1 需求 爬取李子柒微博中视频的评论信息,并做词频分析. 2 方法 2.1 运行环境 运行平台 ...

  6. 爬取全民K歌用户歌曲

    因为全民K歌下载用户的歌曲需要VIP,所以本次教你如何爬取全民K歌用户的歌曲下载打包到本地,只需要用户的K歌号并且没有浏览记录. 需要提前了解的知识:request请求,re正则表达式,fiddle抓 ...

  7. python爬取携程景区用户评论

    python爬取携程景区用户评论(爬虫时遇到翻页但url不变问题时的解决办法) python爬取携程景区用户评论 Ajax页面加载的页面和普通页面的不同 解决办法 效果 python爬取携程景区用户评 ...

  8. python爬取客流数据_Python爬取南京地铁微博发布客流数据并进行分析

    Python爬取南京地铁微博发布客流数据并进行分析 之前在网上看到了分析北京地铁客流数据的开源项目,就想试着分析一下南京地铁的客流数据,可是找了很久没有找到可以获得南京地铁客流数据的接口,就去南京地铁 ...

  9. Python爬取南京地铁微博发布客流数据并进行分析

    Python爬取南京地铁微博发布客流数据并进行分析 之前在网上看到了分析北京地铁客流数据的开源项目,就想试着分析一下南京地铁的客流数据,可是找了很久没有找到可以获得南京地铁客流数据的接口,就去南京地铁 ...

最新文章

  1. Hbase 学习(六) 配置文件调优
  2. 使用psycopg2操作PostgreSQL数据库之二
  3. 聊聊高并发(二十三)解析java.util.concurrent各个组件(五) 深入理解AQS(三)
  4. android ArcGIS学习笔记一
  5. deeplearning.ai 改善深层神经网络 week2 优化算法
  6. RHEL下安装配置基于2台服务器的MYSQL集群
  7. centos下mysql更改数据存放目录_CentOS下mysql更改数据存放目录 --转载
  8. Windows下tomcat进程监控批处理程序
  9. c语言计算结果为1. inf0000,C语言复习题及答案老师给的
  10. 图片md5值不一样_夏天宅家,拍点不一样的宝骏530车模图片!
  11. C常见错误小记(未完)
  12. 我写了一个桌面搜索引擎
  13. myeclipse svn 删除文件或者文件夹
  14. 国外GIS资源网站分类整理 来自www.gis520.com
  15. 没有密码怎么撤销工作表保护
  16. 找不到或无法加载主类怎么办
  17. 国内首款、完全自主、基于云架构的三维CAD平台——CrownCAD(皇冠CAD)
  18. php 微信授权 跨域,微信公众号支付 请求跳转code跨域
  19. Windows的快捷方式、符号链接、目录联接、硬链接的区别
  20. c语言linux系统时间,【整理】C语言设置Linux系统时间 | 勤奋的小青蛙

热门文章

  1. 在线html表格设计器,6款优秀的在线表单设计器
  2. 安全研究人受够!再公布WordPress 3大外挂漏洞
  3. Spring_Hibernate整合准备
  4. 介绍一款facebook信息收集工具FBI
  5. vue.js的一些事件绑定和表单数据双向绑定
  6. Linux下MySQL C API简单示例
  7. Object C学习笔记22-#define 用法
  8. 谈谈NITE 2与OpenCV结合的第二个程序(提取人体骨骼坐标)
  9. 使用brew安装Logstash(Mac)
  10. 【正一专栏】谁能阻止超神的曼城