代码地址:GitHub

参考:博客

通过scrapy框架爬取指定账号的信息和微博

截止到目前(2019年01月15日)的微博账号粉丝排名:

爬取方法:提取网页版的微博接口

1.重写start_request方法

    def start_requests(self):weibo_id = [1195354434, ]for wid in weibo_id:print('https://m.weibo.cn/api/container/getIndex?type=uid&value=' + str(wid))yield Request('https://m.weibo.cn/api/container/getIndex?type=uid&value=' + str(wid), callback=self.parse_userInfo, dont_filter=True,meta={'uid': str(wid)})

2.解析个人信息,并获取containerid

3.爬取博主的微博信息,和他关注的人

    # 解析微博列表def parse_weibo_list(self, response):# 取相关信息,方便爬取下一页next_page = str(int(response.meta['page']) + 1)uid = response.meta['uid']containerid = response.meta['containerid']data = response.textcontent = json.loads(data).get('data')cards = content.get('cards')if (len(cards) > 0):print("-----正在爬取第%s页-----" % str(response.meta['page']))for j in range(len(cards)):card_type = cards[j].get('card_type')# 微博# if card_type == 9:#     mblog = cards[j].get('mblog')#     attitudes_count = mblog.get('attitudes_count')  # 点赞数#     comments_count = mblog.get('comments_count')  # 评论数#     created_at = self.date_format(mblog.get('created_at'))  # 发布时间#     reposts_count = mblog.get('reposts_count')  # 转发数#     scheme = cards[j].get('scheme')  # 微博地址#     # 替换换行后 提取字符串#     text = etree.HTML(str(mblog.get('text')).replace('<br />', '\n')).xpath('string()')  # 微博内容#     pictures = mblog.get('pics')  # 正文配图,返回list#     pic_urls = []  # 存储图片url地址#     if pictures:#         for picture in pictures:#             pic_url = picture.get('large').get('url')#             pic_urls.append(pic_url)#     uid = response.meta['uid']#     # 保存数据#     sinaitem = SinaItem()#     sinaitem["uid"] = uid#     sinaitem["text"] = text#     sinaitem["scheme"] = scheme#     sinaitem["attitudes_count"] = attitudes_count#     sinaitem["comments_count"] = comments_count#     sinaitem["created_at"] = created_at#     sinaitem["reposts_count"] = reposts_count#     sinaitem["pictures"] = pic_urls#     yield sinaitem# 关注信息if card_type == 11:# 获取他关注的人的地址# https://m.weibo.cn/p/index?containerid=231051_-_followers_-_1195354434_-_1042015%3AtagCategory_050&luicode=10000011&lfid=1076031195354434 查看该网页的请求过程fllow_url = str(cards[j]['card_group'][0]['scheme']).replace('https://m.weibo.cn/p/index?', 'https://m.weibo.cn/api/container/getIndex?')print(fllow_url, '----')yield Request(url=fllow_url, callback=self.parse_fllow)# 下一页链接# weibo_list_url = 'https://m.weibo.cn/api/container/getIndex?type=uid&value=' + uid + '&containerid=' + containerid + '&page=' + next_page# response.meta['page'] = next_page# yield Request(weibo_list_url, callback=self.parse_weibo_list, meta=response.meta)

4.根据他关注的人的ID,再次重复此过程

    # 获取关注者的信息def parse_fllow(self, response):data = response.textcontent = json.loads(data).get('data')cards = content.get('cards')# if len(cards) > 0:for card in cards:if card.get('title') == '他的全部关注':for tmp in card.get('card_group'):user = tmp.get('user')# 获取关注的人的IDuid = user.get('id')yield Request('https://m.weibo.cn/api/container/getIndex?type=uid&value=' + str(uid), callback=self.parse_userInfo, dont_filter=True,meta={'uid': str(uid)})

由于此过程是个循环,需要采取一定的控制条件才能爬取完成(如果不被封IP的话)

可先筛选出你感兴趣的用户,再爬取他的微博

防封的话建议采取代理IP的方式,在下载中间件中添加即可

scrapy 爬取新浪微博 的微博列表及微博内容相关推荐

  1. Scrapy爬取新浪微博用户信息、用户微博及其微博评论转发

    项目介绍 新浪微博是国内主要的社交舆论平台,对社交媒体中的数据进行采集是舆论分析的方法之一. 本项目无需cookie,可以连续爬取一个或多个新浪微博用户信息.用户微博及其微博评论转发. 实例 选择爬取 ...

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

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

  3. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(二) —— 编写一个基本的 Spider 爬取微博用户信息

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(一) -- 新建爬虫项目 在上一篇我们新建了一个 sina_scrapy 的项目,这一节我们开始正式编写爬虫的代码. 选择目标 ...

  4. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(四) —— 应对反爬技术(选取 User-Agent、添加 IP代理池以及Cookies池 )

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) -- 数据的持久化--使用MongoDB存储爬取的数据 最近项目有些忙,很多需求紧急上线,所以一直没能完善< 使用 ...

  5. [Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(三) —— 数据的持久化——使用MongoDB存储爬取的数据

    上一篇:[Python 爬虫] 使用 Scrapy 爬取新浪微博用户信息(二) -- 编写一个基本的 Spider 爬取微博用户信息 在上一篇博客中,我们已经新建了一个爬虫应用,并简单实现了爬取一位微 ...

  6. Scrapy爬取新浪微博用户粉丝数据

    一般来说pc端的信息是最为全面的,但是防范措施也是最严格的.所以不能走weibo.com这个域名下进行爬取,新浪微博在pc端的反扒措施较为全面.而手机端的数据则相对好爬取,而且数据都是Json格式,解 ...

  7. Scrapy爬取新浪微博#陈情令

    一.起因 最近几天陈情令大火,而#肖战#王一博等人也成为众人所熟知的对象,所以我想用Scrapy爬取演员的微博信息来分析下演员信息 二. 目标 本次爬取的目标是X玖少年团肖战DAYTOY的公开基本信息 ...

  8. Scrapy框架的使用之Scrapy爬取新浪微博

    前面讲解了Scrapy中各个模块基本使用方法以及代理池.Cookies池.接下来我们以一个反爬比较强的网站新浪微博为例,来实现一下Scrapy的大规模爬取. 一.本节目标 本次爬取的目标是新浪微博用户 ...

  9. Python3网络爬虫开发实战,Scrapy 爬取新浪微博

    前面讲解了 Scrapy 中各个模块基本使用方法以及代理池.Cookies 池.接下来我们以一个反爬比较强的网站新浪微博为例,来实现一下 Scrapy 的大规模爬取. 很多人学习python,不知道从 ...

最新文章

  1. [k8s] 第五章 Pod详解
  2. Python:利用python语言绘制多个子图经典案例、代码实现之详细攻略
  3. Java连接SQL数据库失败的分析思路
  4. python菜单函数_Python 自学笔记- 列表及其内置函数
  5. 从零开始学前端:弹性盒模型(flex布局) --- 今天你学习了吗?(CSS:Day19)
  6. 解决远程桌面关闭后teamviewer不能连接的问题
  7. 网络营销之怎样推广博客
  8. paypal php 方式,如何使用PHP向paypal汇款
  9. tomcatX.exe与startup.bat启动的区别
  10. 更加精确的TCP Westwood拥塞控制算法
  11. 设置计算机ip地址时网关的作用是什么,IP地址小课堂:起到门户作用的网关到底有多重要?...
  12. 1957-挂盐水的故事
  13. 路由器重温——RIP路由
  14. mongoDB常用查询更新删除语句
  15. k8s 使用HPA 进行弹性扩容pod节点,
  16. Python编程入门教程(以在线评测平台为载体)
  17. 杀手皇后 JoJo奇妙冒险 漫画人物3d模型
  18. 《Linux多线程服务端编程:使用muduoC++网络库》学习笔记
  19. Android三步显示gif动态图片
  20. java web中的导出excel_JAVA语言之怎么在JavaWeb中导出Excel

热门文章

  1. CISA要求联邦机构定期追踪网络资产和漏洞情况
  2. 计算机主机结构图手画,电脑的主机结构是怎样的 电脑主机结构图【图文】
  3. Ext.data.Store介绍
  4. 基于GPU的数字图像并行处理研究
  5. 15_JQuery DOM操作之移除元素、清空某元素所有子元素
  6. iOS 为app生成下载链接,并生成二维码
  7. 用Python把人物头像动漫化,不同的表情给你不同的惊喜
  8. 长虹50q1n 显示服务器端异常,长虹智能电视显示网络配置错误解决方法分享
  9. 早期的社会主义者---罗素
  10. html代码怎么把竖排转横排,Excel怎么把竖排变成横排 两个方法实现