import scrapy
import json
import re
import datetime
import time
from w3lib.html import remove_tags
import math
from my_project.items import WeiboItem
class WeiboSpider(scrapy.Spider):
name = ‘weibo’
allowed_domains = [‘weibo.cn’]
start_urls = [‘https://m.weibo.cn/api/container/getIndex?type=uid&value=1793285524&containerid=1076031793285524‘]

def parse(self, response):res_dict = json.loads(response.text)# print(res_dict)#循环所有微博内容并获取for data in  res_dict['data']['cards']:try:name = data['mblog']['user']['screen_name']print(name)time = data['mblog']['created_at']#判断时间使其输出格式统一if '小时' in time:print(time)res_time = re.match('\d+', time)ISOTIMEFORMAT = '%Y-%m-%d %X'time_now = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')res_hour = re.search(r'\s(\d+):', time_now)res = int(res_time[0]) - int(res_hour[1])if res > 0:now = datetime.datetime.now()time = (now + datetime.timedelta(days=-1)).strftime("%Y-%m-%d")else:time = datetime.datetime.now().strftime("%Y-%m-%d")print(time)content = data['mblog']['text']# content = remove_tags(content)print(content)passnum = data['mblog']['reposts_count']print(passnum)comments_count = data['mblog']['comments_count']print(comments_count)attitudes_count = data['mblog']['attitudes_count']print(attitudes_count)uid = data['mblog']['user']['id']#print(uid)item = WeiboItem()item['name'] = nameitem['time'] = timeitem['content'] = contentitem['passnum'] = passnumitem['comments_count'] = comments_countitem['attitudes_count'] = attitudes_countyield itemexcept Exception as e:print(e)try:#获取其微博的总数count_num = res_dict['data']['cardlistInfo']['total']# print(count_num)#判断分了多少页res_num = math.ceil(count_num/10)except Exception as e:print(e)# print(res_num)#获取其全部微博for i in range(1,res_num+1):page_url = 'https://m.weibo.cn/api/container/getIndex?type=uid&value='+str(uid)+'&containerid=107603'+str(uid)+'&page='+str(i)+''yield scrapy.Request(url=page_url,callback=self.parse)#找到他的关注的人的ajax请求,并携带自身id传给下个函数uid_url = 'https://m.weibo.cn/api/container/getIndex?containerid=231051_-_followers_-_'+str(uid)+'_-_1042015:tagCategory_050&luicode=10000011&lfid=107603'+str(uid)+'&type=uid&value='+str(uid)+''#print(uid)yield scrapy.Request(url=uid_url,callback=self.parse_info,meta={'gid':uid})# 'https://m.weibo.cn/api/container/getIndex?containerid=231051_-_followers_-_1878546883_-_1042015%253AtagCategory_012&luicode=10000011&lfid=1076031878546883&type=uid&value=1878546883&page=2'def parse_info(self,response):res_dict = json.loads(response.text)#获取他的所有关注的人try:res_num = res_dict['data']['cardlistInfo']['total']res_num = math.ceil(res_num/20)except:#若果找不到这个值,就付给一个固定页数,通过一个人找其他的人,所以不需要很多的人res_num = 5#这个是由上个函数携带多来的uid = response.meta['gid']print(uid)#获取他关注的人的每页的内容for i in range(2,res_num+1):bs_url = 'https://m.weibo.cn/api/container/getIndex?containerid=231051_-_followers_-_'+str(uid)+'_-_1042015:tagCategory_050&luicode=10000011&lfid=107603'+str(uid)+'&type=uid&value='+str(uid)+'&page='+str(i)+''#print('我来到了关猪的所有人的地方')yield scrapy.Request(url=bs_url,callback=self.parse_info,meta={'gid':uid})# 获取其他人的idtry:res_mmp = res_dict['data']['cards'][3]['card_group']except:res_mmp = res_dict['data']['cards'][0]['card_group']for data in res_mmp:#print('我来到了其他人的主页')#print(data)try:uid = data['buttons'][0]['actionlog']['oid']except Exception as e:print(e)#print(str(uid)+'------------')#获取到其他人的id并返回给上个函数uid_url = 'https://m.weibo.cn/api/container/getIndex?type=uid&value='+str(uid)+'&containerid=107603'+str(uid)+''yield scrapy.Request(url=uid_url,callback=self.parse)

用scrapy框架爬取微博所有人的微博内容的相关推荐

  1. 基于scrapy框架爬取新浪体育部分板块内容

    import scrapy from selenium import webdriver from sohuPro.items import SohuproItem class SohuSpider( ...

  2. [Python爬虫]使用Scrapy框架爬取微博

    Scrapy框架爬取微博 简介 包 Scrapy框架 main.py(启动文件) setting.py(配置文件) pq.py(项目文件) 话题小组模块 模板 图片模块 用户模块 视频模块(未找到视频 ...

  3. 利用python的scrapy框架爬取google搜索结果页面内容

    scrapy google search 实验目的 爬虫实习的项目1,利用python的scrapy框架爬取google搜索结果页面内容. https://github.com/1012598167/ ...

  4. 03_使用scrapy框架爬取豆瓣电影TOP250

    前言: 本次项目是使用scrapy框架,爬取豆瓣电影TOP250的相关信息.其中涉及到代理IP,随机UA代理,最后将得到的数据保存到mongoDB中.本次爬取的内容实则不难.主要是熟悉scrapy相关 ...

  5. 使用scrapy框架爬取斗鱼图片

    使用scrapy框架爬取斗鱼图片 首先我们先认识一下框架 scrapy-Scrapy是Python开发的一个快速.高层次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据.Scr ...

  6. 利用Scrapy框架爬取LOL皮肤站高清壁纸

    利用Scrapy框架爬取LOL皮肤站高清壁纸  Lan   2020-03-06 21:22   81 人阅读  0 条评论 成品打包:点击进入 代码: 爬虫文件 # -*- coding: utf- ...

  7. scrapy框架 爬取重庆工程学院

    scrapy框架 爬取重庆工程学院 目的:爬取重庆工程学院 中的管理学院的学院动态 百度搜索重庆工程学院,看到如图所示 因为我使用scarpy框架,不知道如何创建项目的,可以看看我之前的文章(简单的理 ...

  8. scrapy获取a标签的连接_python爬虫——基于scrapy框架爬取网易新闻内容

    python爬虫--基于scrapy框架爬取网易新闻内容 1.需求[前期准备] 2.分析及代码实现(1)获取五大板块详情页url(2)解析每个板块(3)解析每个模块里的标题中详情页信息 点击此处,获取 ...

  9. 基于Scrapy框架爬取豆瓣《复联4》影评,并生成词云

    基于Scrapy框架爬取豆瓣<复联4>影评,并生成词云 1. 介绍及开发环境 2. 爬虫实现 2.1 新建项目 2.2 构造请求 2.3 提取信息 2.4 数据存储 2.4 运行结果 3. ...

  10. scrapy框架爬取网站图片

    使用scrapy 框架爬取彼岸图库 前言: 这两天在网上学习了一下scrapy框架,发现及其好用,把爬虫步骤分的细细的.所以写了一个简单项目回顾一下并分享给大家^ . ^ 源码我已经放到Github了 ...

最新文章

  1. 获得客户端的时区(get client-side time zone by JS)
  2. 数学图形(2.10)一种绕在球上的线圈
  3. 属性动画基础之ValueAnimator
  4. std中稳定排序算法_源代码库已开放 | 哈工大硕士生用 Python 实现了 11 种经典数据降维算法...
  5. QT每日一练day9:设计师界面
  6. java递归简易应用教程
  7. 米筐量化不支持c语言_量化初级之量化选股
  8. Ubuntu下如何使用虚拟机安装WindowsXP?(2)【转】
  9. 全国计算机二级公共基础知识电子版,全国计算机二级公共基础知识汇总.pdf
  10. php判断访问客户端是手机,判断客户端是否手机访问
  11. matlab一个m文件定义多个函数,matlab怎么在一个m文件中写多个函数?
  12. java导出dbf文件_Java 导出dbf文件
  13. 249PHP等于多少钱,一百万新台币等于多少人民币
  14. JAVA鸡汤------一个牛人给java初学者的建议
  15. matplotlib绘图:散点图、折线图、柱状图、水平条形图、饼图和直方图
  16. 超越OCR的富文档内容解析神器LayoutParser
  17. SAP License:SAP软件作用是什么
  18. Easymock十分钟入门
  19. 02-CPU基础知识:通俗易懂方式理解主频、核心、线程、缓存、架构
  20. python list和tuple

热门文章

  1. [Flask]解决Flask用video标签播放不了视频黑屏的问题
  2. 是否打球的决策树算法(python 文件读取,决策树,误差计算)
  3. [Java故障排除指南- JDK11-学习笔记]-3-诊断工具jcmd
  4. 史上最全的数据库面试题,不看绝对后悔
  5. 字符串匹配代码C语言,KMP算法(快速模式匹配算法)详解以及C语言实现
  6. Ardunio开发实例-BME680传感器使用
  7. java 在线qq客服_jquery实现漂浮在网页右侧的qq在线客服插件
  8. MEF 元数据设计原理
  9. 理解Functon.prototype的__proto__是Object.prototype
  10. qt linux 世界时钟,World Clock Deluxe——世界时钟