python爬虫,微博爬虫,需要知晓微博用户id号,能够通过抓取微博用户主页内容来获取用户发表的内容,时间,点赞数,转发数等数据,当然以上都是本渣渣结合网上代码抄抄改改获取的!

要抓取的微博地址:https://weibo.com/u/5118612601

BUT,我们实际应用的抓取地址:https://m.weibo.cn/u/5118612601(移动端的微博地址)

LSP的最爱,各种小姐姐,随你任意爬取,快收藏起来啊!

通过浏览器抓包,我们可以获悉几个比较重要的参数:

  1. type: uid
  2. value: 5118612601
  3. containerid: 1005055118612601

其实还有一个比较重要的参数,那就是翻页:'page':page!

还有一个SSL错误问题,大家可以自行处理!

  1. import logging
  2. logging.captureWarnings(True)
  3.  
  4. # 屏蔽warning信息
  5. requests.packages.urllib3.disable_warnings()
  6.  
  7. html=requests.get(self.url,headers=self.headers,params=params,timeout=5,verify=False).content.decode('utf-8')
  8.  

几个关键点

  • 获取 containerid 参数

  1.     def get_containerid(self):
  2.         url = f'https://m.weibo.cn/api/container/getIndex?type=uid&value={self.uid}'
  3.         data = requests.get(url,headers=self.headers,timeout=5,verify=False).content.decode('utf-8')
  4.         content = json.loads(data).get('data')
  5.         for data in content.get('tabsInfo').get('tabs'):
  6.             if (data.get('tab_type') == 'weibo'):
  7.                 containerid = data.get('containerid')
  8.  
  9.         self.containerid=containerid
  • 获取 微博用户发表 数据

  1.     def get_content(self,i):
  2.         params={
  3.             'type': 'uid',
  4.             'value': self.uid,
  5.             'containerid': self.containerid,
  6.             'page':i,
  7.         }
  8.         html=requests.get(self.url,headers=self.headers,params=params,timeout=5,verify=False).content.decode('utf-8')
  9.         data=json.loads(html)['data']
  10.         cards=data['cards']
  11.         #print(cards)
  12.         j = 1
  13.         for card in cards:
  14.             if "mblog" in str(card):
  15.                 mblog = card['mblog']
  16.                 raw_text = mblog['raw_text']  # 文本内容
  17.                 print(raw_text)
  18.                 scheme=card['scheme'] #微博链接
  19.                 attitudes_count = mblog.get('attitudes_count') #点赞数
  20.                 comments_count = mblog.get('comments_count') #评论数
  21.                 created_at = mblog.get('created_at') #发布时间
  22.                 reposts_count = mblog.get('reposts_count') #转发数
  23.                 print(scheme)
  24.                 img_path=f'{self.path}{i}/{j}'
  25.                 os.makedirs(f'{img_path}/',exist_ok=True)
  26.                 with open(f'{img_path}/{j}.txt', 'a', encoding='utf-8') as f:
  27.                     f.write(f'{raw_text}')
  28.  
  29.                 img_urls=[]
  30.                 if mblog.get('pics') != None:
  31.                     img_datas=mblog['pics']
  32.                     for img_data in img_datas:
  33.                         img_url=img_data['large']['url']
  34.                         img_urls.append(img_url)
  35.                     print(img_urls)
  36.  
  37.                     #多线程下载图片
  38.                     self.get_imgs(img_urls,img_path)
  39.  
  40.                     #多进程下载图片
  41.                     #self.get_pimgs(img_urls)
  42.  
  43.                 with open(f'{self.uid}/{self.uid}.txt', 'a', encoding='utf-8') as fh:
  44.                     fh.write("----第" + str(i) + "页,第" + str(j) + "条微博----" + "\n")
  45.                     fh.write(f"微博地址: {str(scheme)}\n微博内容:{raw_text}\n"
  46.                              f"发布时间:{str(created_at)}\n转发数:{str(reposts_count)}\n"
  47.                              f"点赞数:{str(attitudes_count)}\n评论数:{str(comments_count)}\n\n")
  48.                 j=j+1
  49.  
  50.                 time.sleep(2)
  51.  
  • 多线程下载图片

  1.     #多线程下载图片
  2.     def get_imgs(self,img_urls,img_path):
  3.         threadings = []
  4.         for img_url in img_urls:
  5.             t = threading.Thread(target=self.get_img, args=(img_url,img_path))
  6.             threadings.append(t)
  7.             t.start()
  8.  
  9.         for x in threadings:
  10.             x.join()
  11.  
  12.         print("多线程下载图片完成")
  13.  
  14.  
  15.     def get_img(self, img_url,img_path):
  16.         img_name = img_url.split('/')[-1]
  17.         print(f'>> 正在下载图片:{img_name} ..')
  18.         r = requests.get(img_url, timeout=8, headers=self.headers,verify=False)
  19.         with open(f'{img_path}/{img_name}', 'wb') as f:
  20.             f.write(r.content)
  21.         print(f'>> 图片:{img_name} 下载完成!')
  22.  

本来还想搞个多进程,结果翻车了,报错各种头秃,那就不搞了!!

本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理

想要获取更多Python学习资料可以加QQ:2955637827私聊或加Q群630390733大家一起来学习讨论吧!

微博爬虫,python微博用户主页小姐姐图片内容采集爬虫的更多相关文章

  1. APP爬虫(2)把小姐姐的图片down下来

    APP爬虫(1)想学新语言,又没有动力,怎么办? 书接上文.使用appium在帖子列表界面模拟上划动作,捕捉不到列表的规律.上划结束后,列表只能获取到屏幕呈现的部分,而且下标还是从0开始的. 根据酸奶 ...

  2. 用Python做个海量小姐姐素描图

    素描作为一种近乎完美的表现手法有其独特的魅力,随着数字技术的发展,素描早已不再是专业绘画师的专利,今天这篇文章就来讲一讲如何使用python批量获取小姐姐素描画像.文章共分两部分: 第一部分介绍两种使 ...

  3. python爬取快手小姐姐视频

    流程分析 一.导入需要的三方库 import re #正则表表达式文字匹配 import requests #指定url,获取网页数据 import json #转化json格式 import os ...

  4. Python爬虫:爬取美拍小姐姐视频

    最近在写一个应用,需要收集微博上一些热门的视频,像这些小视频一般都来自秒拍,微拍,美拍和新浪视频,而且没有下载的选项,所以只能动脑想想办法了. 第一步 分析网页源码. 例如:http://video. ...

  5. Python 抖音机器人,论如何在抖音上找到漂亮小姐姐?

    只有想不到,没有做不到,最近抖音风靡好友圈,马上就有技术宅本着“代码改变世界”的理念开始了搞事之路. 需要注意的事,漂亮不漂亮没有明确的界限,每个人都有每个人的审美,只有外表而没有心灵的美也是空洞的. ...

  6. [Python]小百合十大爬虫

    国庆几天在家看了几篇关于使用Python来编写网络爬虫的博客,想来自己断断续续学习Python也有几个月了,但一个像样的程序都没有写过,编程能力并没有得到提高,愧对自己花费的时间.很多时候虽然知道什么 ...

  7. 用python爬取之后发现果然如此,都说知乎的小姐姐漂亮

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取http ...

  8. 要不是真的喜欢学技术,谁会来用Python爬小姐姐啊

    养成习惯,先赞后看!!!不用于任何商业价值,只是自己娱乐.否则 爬虫爬的好,牢饭吃到饱.这是我们这次爬取的网址:https://www.vmgirls.com/ 很多人学习python,不知道从何学起 ...

  9. Python爬虫学习第一记 (翻译小助手)

    1 # Python爬虫学习第一记 8.24 (代码有点小,请放大看吧) 2 3 #实现有道翻译,模块一: $fanyi.py 4 5 import urllib.request 6 import u ...

随机推荐

  1. nginx学习首页随机模块

    在default.conf下加入这行开启随机模块,在root目录下放入几种不同的html 改完保存下,使用命令检查nginx语法是否正确 nginx -tc /etc/nginx/nginx.conf ...

  2. leetcode 108 和leetcode 109 II

    //感想:没啥上篇写完了 //思路:对于这道题109来说,就是数组变成了链表,其他没有变,我觉得非常不解,因为我想到的依旧是找中点,用快慢指针来找, 找到以后将链表分成两半,继续递归的去找,我就觉得这 ...

  3. 1、Go语言介绍

    一 Go语言介绍 Go 即Golang,是Google公司2009年11月正式对外公开的一门编程语言. Go是静态强类型语言,是区别于解析型语言的编译型语言. 解析型语言--源代码是先翻译为中间代码, ...

  4. Python多线程join和setDaemon区别与用法

    一直没有太搞清楚join和setDaemon有什么区别,总是对于它们两个的概念很模糊,需要做个实验然后记录一下. 先说结论: join: 子线程合并到主线程上来的作用,就是当主线程中有子线程join的 ...

  5. 推荐系统实践 0x09 基于图的模型

    用户行为数据的二分图表示 用户的购买行为很容易可以用二分图(二部图)来表示.并且利用图的算法进行推荐.基于邻域的模型也可以成为基于图的模型,因为基于邻域的模型都是基于图的模型的简单情况.我们可以用二元 ...

  6. Verilog之阻塞赋值非阻塞赋值

    verilog设计进阶 时间:2014年5月6日星期二 主要收获: 1. 阻塞赋值与非阻塞赋值: 2. 代码测试: 3. 组合逻辑电路和时序逻辑电路. 阻塞赋值与非阻塞赋值: 1. 阻塞赋值" ...

  7. 排序--MergeSort 归并排序?

    MergeSort 's implementation MergetSort 的中心思想就是分治思想,通过解决每一个小问题来解决大问题 假设你有2个已经排好序的数组 数组[ 4 ][ 8 ] 和 数组 ...

  8. Python中的迭代是什么意思?

    Python中的迭代是指通过重复执行的代码处理相似的数据集的过程,并且本次迭代的处理数据要依赖上一次的结果继续往下做,上一次产生的结果为下一次产生结果的初始状态,如果中途有任何停顿,都不能算是迭代. ...

  9. 第15.12节PyQt(Python+Qt)入门学习:可视化设计界面组件布局详解

    一.引言 在Qt Designer中,在左边部件栏的提供了界面布局相关部件,如图: 可以看到共包含有四种布局部件,分别是垂直布局(Vertical Layout).水平布局(Horizontal La ...

  10. 建立sa用户登录

    Sa用户是SQL Server的超级管理员用户,由于该用户的特殊性,往往容易成为被攻击的漏洞对象,因此建议不要轻易启动该用户.下面讲述如何以Sa用户的身份登录当前的SQL Server系统. 第一步: ...