环境介绍

Python3.6.2/Windows-7-64位/微博移动端

实现目标

将微博上你感兴趣的博主微博(全部或过滤非原创等)内容获取,包括微博文本、图片和热评,文本和热评按编号存入txt文件中,图片按编号存入指定路径文件夹中。这样一来方便对你关注的微博信息进行定期保存以及后期的检索查阅,二来将这些数据获取后也可以对博主微博、评论等信息进行进一步的数据分析。

本例中获取数据保存在本地文件系统,如爬取数据量大,可考虑使用MongoDB等数据库,方便数据存储和检索查阅。

准备工作

一般来说同一网站,PC站的信息较为全面,但不易爬取,而移动端则相对来说比较简单,因此本例中选取移动端站点http://m.weibo.com作为入口来进行爬取。

进入所要爬取的博主的主页,以我关注的“博物杂志”为例,发现其主页url为:

https://m.weibo.cn/u/1195054531?uid=1195054531&luicode=10000011&lfid=100103type%3D1%26q%3D%E5%8D%9A%E7%89%A9%E6%9D%82%E5%BF%97

其中1195054531这段数字就是我们要找的uid,然后打开在浏览器中输入url: http://m.weibo.cn/u/1195054531 再次进入相同主页,这时候按F12打开谷歌开发者工具,点“Network”,因为移动端站点加载方式为异步加载,我们主要关注XHR下请求,点“XHR”,按F5刷新重新发送请求。这时候发现浏览器已经发送两个请求,第一个请求主要是为了获取一些和博主相关的介绍信息,而第二个请求就是为了获取第一页所有微博的信息,我们重点关注第二个请求。

点“Headers”,可以发现Request URL 、Cookie、Referer等我们需要的信息(Cookie信息这里采用手动获取方式,有效时间为几个小时不等,过期后需要手动重新获取一下), 其中Request URL为

https://m.weibo.cn/api/container/getIndex?type=uid&value=1195054531&containerid=1076031195054531

后面通过观察发现,在这个url末尾加上&page=页数可以控制想要爬取的微博页数。 点“Preview”:

观察返回的json数据,cards下就是一条条微博的信息card。 点开mblog,可以获取详细的微博相关内容:

我们主要需要以下数据: ‘id’:微博编号 ‘text’:微博文本 ‘islongText’:判断该条微博是否为长微博 ‘bmiddle_pic’:判断该微博是否带有图片

点开某条具体微博,来到微博完整内容和评论页面,同理通过观察“Network中请求相关信息,可以发现该页面url为: https://m.weibo.cn/api/comments/show?id=3900009063730800&page=1 其中id后面数字即为我们前面获取的微博编号,page参数可控制微博页数,请求返回json格式数据如下:

其中’data’和’hotdata’分别为评论和热评数据。

实现逻辑通过控制page参数获取每页微博的cards数据,其中包含各条微博的详细信息;

开始遍历每一页微博页,同时遍历每一页的每一个微博,期间进行如下操作:

判断是否为长微博,如不是获取文本信息,否则进入详细微博内容请求,获取文本信息,将文本信息写入txt文档;

判断微博是否带有图片,如有通过请求获取图片地址,遍历地址,将其链接写入txt文档,将图片保存到本地,如无图片结束;

通过微博评论请求,获取评论数据列表,遍历列表获得该微博下每一条评论并保存到txt文档中相应微博内容下; …… 直到遍历完每一条微博。

爬取过程

爬取结果

文件夹中为对应微博图片,txt文档中为爬取的微博文本、评论内容。

以爬取“博物杂志”第3条微博为例,原博内容如下:

Txt文本中微博文本和评论如下:

文件夹中对应图片如下:

相对来说可以比较方便地进行检索和查阅。

代码实现

from lxmlimport html

import requests

import json

import re

import os

import time

import urllib.request

class CrawlWeibo:

# 获取指定博主的所有微博cards的list

defgetCards(self, id, page): # id(字符串类型):博主的用户id;page(整型):微博翻页参数

ii = 0

list_cards = []

while ii < page:

ii = ii + 1

print('正在爬取第%d页cards' % ii)

url = 'https://m.weibo.cn/api/container/getIndex?type=uid&value=' + id + '&containerid=107603' + id + '&page=' + str(

ii)

response = requests.get(url, headers=headers)

ob_json = json.loads(response.text) # ob_json为dict类型

list_cards.append(ob_json['data']['cards']) # ob_json['data']['cards']为list类型

time.sleep(2)

print('暂停2秒') # 爬完一页所有微博的cards后 停顿两秒

return list_cards# 返回所有页的cards

python微博文本分析_Python 3.6实现单博主微博文本、图片及热评爬取相关推荐

  1. Python 3.6实现单博主微博文本、图片及热评爬取

    CodingGo技术社区 自由的编程学习平台 文章简介 经常刷微博的同学肯定会关注一些有比较意思的博主,看看他们发的文字.图片.视频和底下评论,但时间一长,可能因为各种各样的原因,等你想去翻看某个博主 ...

  2. python爬取网易云音乐热评,爬取网易云音乐热评[附上音乐下载]

    [Python] 纯文本查看 复制代码import requests import time,os from bs4 import BeautifulSoup class Music_down: de ...

  3. 浅谈Python爬虫(五)【网易云热评爬取实例】

    浅谈Python爬虫(五) 目的:爬取网易云歌单所有歌曲的信息及热评 Python环境:3.7 编译器:PyCharm2019.1.3专业版 存储格式:JSON 1.分析网页 进入网易云音乐首页,点击 ...

  4. python微博爬虫分析_python爬取和分析新浪微博(一):scrapy构建新浪微博榜单、博主及微博信息爬虫...

    1. 爬虫项目介绍 爬虫首先基于python scrapy 框架,使用了随机用户代理和IP代理等反爬技巧,将爬取到的微博领域数据,各领域榜单博主信息和博主的微博信息分别存入的mysql数据库对应的表格 ...

  5. python数据获取与文本分析_python文本分析之处理和理解文本

    前言: 在进行自然语言的建模(NLP)时,我们通常难以处理文字类型的数据,因此在常见的机器学习项目中,数据的格式是结构化的,就算在视觉处理的时候也是一个矩阵或者高维张量的形式.那么文字类型的数据我们应 ...

  6. python爬虫爬取淘宝图片_淘宝上的图片是怎么被爬取的

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 今天河马http给大家说一下,淘宝上的图片是怎么被爬取的.我们先打开淘宝,输入我们要抓取的图片的关键词,研究分析一下页面,查找所需信息所在的位置,然后开始 ...

  7. python商品评论分析_python实现电商评论的情感分析

    现如今各种APP.微信订阅号.微博.购物网站等网站都允许用户发表一些个人看法.意见.态度.评价.立场等信息.针对这些数据,我们可以利用情感分析技术对其进行分析,总结出大量的有价值信息.例如对商品评论的 ...

  8. [转载] python字符串情感分析_python进行情感分析

    参考链接: 在Python中从字符串中删除停用词stop word python进行情感分析 发布时间:2018-02-10 09:57, 浏览次数:549 , 标签: python 一.数据获取 在 ...

  9. 基于python的可视化分析_Python数据的可视化分析,python

    python数据可视化分析 首先载入必要的库 import warnings import numpy as np import pandas as pd import matplotlib.pypl ...

最新文章

  1. 高考准考证电子版_2021年云南成人高考报名、考试等重要事项时间安排表
  2. c++ 0.你好,世界
  3. 深度学习(三)转-可视化理解卷积神经网络 直接查看卷积神经网络的过程特征...
  4. modbus 台达a2_驱控智造未来 台达重磅发布多款工业自动化新品
  5. o(n)复杂度下实现数组去除重复项
  6. (已解决)MAC JAVA错误:Cocoa AWT: Not running on AppKit thread 0 when expected
  7. html前端订餐网页代码_21天学通HTML+CSS+JavaScript Web开发 中文完整PDF版
  8. Web_信息搜集(DAY2)
  9. 【神器】截图+贴图工具 Snipaste
  10. 信号与系统:希尔伯特变换
  11. Andriod 实现可拖动列表
  12. ERP原理及应用教程-第二章
  13. 【渝粤题库】陕西师范大学200941小学数学教学论 作业(高起专)
  14. 常量的分类_基本数据类型
  15. python怎么画名字_python 画中国地图怎么把省份名字加上-
  16. Unity3d的一些简单坑
  17. 沈阳市中考计算机考试时间,2017沈阳市中考考试科目及时间
  18. 分组卷积与DW卷积、Residuals与Inverted Residuals、bottleneck与linearbottleneck
  19. Vue.js学习笔记(3)循环语句
  20. 中国自然地理分区数据集 (含农业区划、森林工程、生态保护区、九大流域等)

热门文章

  1. 看到一个想收藏的的AJAX小列子
  2. 公众账号取名的技巧与忌讳?
  3. 某城市的出租车计费标准为起步价10元(3公里内含3公里),在3公里到10公里(含10公里)之间每公里2.1元,超过10公里部分每公里3元。编写程序,用Python实现输入行车距离x,输出车费。
  4. xArm机械臂知识点
  5. STM32G070RBT6基于Arduino框架下串口数据接收使用示例
  6. Ellisys Bluetooth Sniffer 文档 (EEN-BT06) - 蓝牙安全 - 真相还是虚构?
  7. 扁鹊医术与企业解决方案
  8. 如何在WordPress插入Bilibili视频
  9. word排版-章节大写图片题注小写(带章节号:图1.1,图2.1)
  10. 物联网无线传感器复习