本文爬取的是m站的微博内容,基于python 2.7

一、 微博内容爬取

1.要爬取的微博首页网址https://m.weibo.cn/u/3817188860?uid=3817188860&luicode=10000011&lfid=100103type%3D1%26q%3DAlinda

2.手机微博是看不到翻页,是一直往下加载的,但是其json格式的数据仍然以翻页的形式呈现。

3.打开开发者工具,向下翻页面,可以在Network下的XHR的响应文件中,找到json文件的网址。

如:https://m.weibo.cn/api/container/getIndex?uid=3817188860&luicode=10000011&lfid=100103type%3D1%26q%3DAlinda&containerid=1076033817188860&page=4

通过分析发现每个JSON页面是有规律的,即前面的内容都一样,只是后面的页码不同;每个json页面的格式如下:

https://m.weibo.cn/api/container/getIndex?uid=3817188860&luicode=10000011&lfid=100103type%3D1%26q%3DAlinda&containerid=1076033817188860&page=【page_num】

一般情况下一个json页面有11微博评论(我只是查看了几个页面,所有的页面是不是这样,我没有去验证)

知道json页面的组成规律,我们就可以爬虫了!!!

4.微博内容爬取

代码如下:

# -*- coding: utf-8 -*-

import requests

import re

from fake_useragent import UserAgent

import pandas as pd

ua = UserAgent()

headers = {

'User-Agent':ua.random, # ua.random是随机生成一个User-Agent

'Host': 'm.weibo.cn',

'Referer': 'https://m.weibo.cn/p/1005053817188860?sudaref=login.sina.com.cn',

}

def WriteInCsv(list):

df = pd.DataFrame(list, columns=[u'微博内容链接', u'创建时间', u'id', u'微博内容',u'转发数', u'评论数', u'点赞数'])

df.to_excel("content.xlsx", encoding="utf_8_sig", index=False)

def getMblogContent():

list = []

bsae_url = 'https://m.weibo.cn/api/container/getIndex?uid=3817188860&luicode=10000011&lfid=100103type%3D1%26q%3DAlinda&containerid=1076033817188860&page='

for p in range(0, 149):

try:

url = bsae_url + p.__str__()

resp = requests.get(url, headers=headers, timeout=10)

JsonData = resp.json()

data = JsonData.get('data').get('cards') # cards里包含此页面的所有微博内容

print p

for d in data: # data是列表类型

try:

scheme = d['scheme']

mblog = d['mblog'] # i是字典类型

created_at = mblog['created_at'] # mblog也是页面里的一个容器名字,一个mblog表示一个微博

id = mblog['idstr']

text = re.sub(u"\\<.>", "", mblog['text']) # 去除<>标签里的内容

print text

reposts_count = mblog['reposts_count']

comments_count = mblog['comments_count']

attitudes_count = mblog['attitudes_count']

list.append([scheme, created_at, id, text, reposts_count, comments_count, attitudes_count])

except:

print "error"

except:

print "打开页面错误"

return list

print "OK"

list = getMblogContent()

WriteInCsv(list)

5.代码说明:

(1)本代码总共用了两个try。第一个try是为了跳过打不开的json页面;第二个try是为了跳过“mblog”内容为的字典,最开始没有加第2 try,老是出错,后来发现是因为有些“mblog”里并没有内容,是空的。

二、微博评论爬取

1.从上面的json数据页面获取字段idstr,即微博id。

从https://m.weibo.cn/status/4177994643916324地址可以获取一条微博的手机页面。

格式:https://m.weibo.cn/status/【id】

2.从https://m.weibo.cn/api/comments/show?id=4273393069439291&page=1

地址可以获取一条微博的评论的json格式数据,id为一条微博的id,page为评论翻页。

格式:https://m.weibo.cn/api/comments/show?id=【id】&page=【page_num】

3.从m站爬取的微博评论,最多只有100页,大概是1000条。

4.可以从以下方式获取所有的评论页面,但得到的是HTML页面,不是JSON格式,所有我还没有找到获取页面内容的方法???

格式:https://weibo.com/aj/v6/comment/big?ajwvr=6&id=【id】&filter=all&page=【page_num】。

5.微博博主(m站的,每条微博最多获取100页的评论数据)所有微博评论的python实现代码如下:

# -*- coding: utf-8 -*-

import requests

import re

from fake_useragent import UserAgent

import pandas as pd

ua = UserAgent()

headers = {

'User-Agent': ua.random, # ua.random是随机生成一个User-Agent

'Host': 'm.weibo.cn',

'Referer': 'https://m.weibo.cn/p/1005053817188860?sudaref=login.sina.com.cn',

}

def WriteInCsv(list):

df = pd.DataFrame(list, columns=[u'微博id', u'用户id', u'评论文本', u'评论数'])

df.to_excel("comment.xlsx", encoding="utf_8_sig", index=False)

def getOnePageComment(mblog_id,data,hot_data):

for i in data:

text = re.sub(u"\\<.>", "", i['text']) # 去除<>标签里的内容

like_counts = i['like_counts']

user_id = i['user']['id'].__str__()

list.append([mblog_id, user_id, text, like_counts])

for i in hot_data:

text = re.sub(u"\\<.>", "", i['text']) # 去除<>标签里的内容

like_counts = i['like_counts']

user_id = i['user']['id']

list.append([mblog_id, user_id, text, like_counts])

print "list长度:"

print len(list)

base_url= "https://m.weibo.cn/api/comments/show?id="

df = pd.read_excel("content.xlsx") # excel

id_list =df['id']

list = []

i = 0

for id in id_list:

mblog_id = id.__str__()

print i

base_url2 = base_url+id.__str__() +'&page='

for p in range(0, 100):

try:

url = base_url2 + p.__str__()

print url

resp = requests.get(url, headers=headers, timeout=10)

JsonData = resp.json()

if JsonData['ok'] != 0:

data = JsonData.get('data').get('data') # cards是页面里的一个容器名字

print "data"

else:

break

if JsonData.get('data').get('hot_data'):

hot_data = JsonData.get('data').get('hot_data')

print "hot_data"

else:

hot_data = ""

print "hot_data_null"

getOnePageComment(mblog_id, data, hot_data)

except:

print 'error'

i = i + 1

print "OK"

WriteInCsv(list)

微博爬虫python_微博爬虫 python相关推荐

  1. 什么叫爬虫python_网络爬虫是什么?

    互联网诞生之初,是为了让人们更容易的分享数据.交流通讯.互联网是桥梁,连接了世界各地的人们.网站的点击.浏览都是人为的,与你聊天的也是活生生的人.然而,随着技术的发展,人们对数据的渴望,出现了各种网络 ...

  2. python爬取微博评论点赞数_python 爬虫 爬微博 分析 数据

    python 爬虫 爬微博分析 数据 最近刚看完爱情公寓5,里面的大力也太好看了吧... 打开成果的微博,小作文一样的微博看着也太爽了吧... 来 用python分析分析 狗哥这几年微博的干了些啥. ...

  3. python爬虫微博评论图片_python爬虫爬取微博评论

    原标题:python爬虫爬取微博评论 python爬虫是程序员们一定会掌握的知识,练习python爬虫时,很多人会选择爬取微博练手.python爬虫微博根据微博存在于不同媒介上,所爬取的难度有差异,无 ...

  4. python微博爬虫实战_32个Python爬虫实战项目,满足你的项目荒,附赠资料

    写在前面 学习Python爬虫的小伙伴想成为爬虫行业的大牛么? 你想在网页上爬取你想要的数据不费吹灰之力么? 那么亲爱的小伙伴们肯定需要项目实战去磨练自己的技术,毕竟没有谁能随随便便成功! 小编前段时 ...

  5. python爬虫登录微博_python爬虫-模拟微博登录

    微博模拟登录 这是本次爬取的网址:https://weibo.com/ 一.请求分析 找到登录的位置,填写用户名密码进行登录操作 看看这次请求响应的数据是什么 这是响应得到的数据,保存下来 exect ...

  6. python爬虫登录微博_python爬虫-模拟微博登录功能

    微博模拟登录 这是本次爬取的网址:https://weibo.com/ 一.请求分析 找到登录的位置,填写用户名密码进行登录操作 看看这次请求响应的数据是什么 这是响应得到的数据,保存下来 exect ...

  7. 【Python】爬虫:微博找人页面爬虫(二)

    [Python]爬虫:微博找人页面爬虫(二) 微博-找人页面,需要登录才行访问,若没有登录就会自动跳转到登录界面, 这时便想到两种方式: 1,使用selenium,自动化模拟登录,但是很不稳定,而且页 ...

  8. 【Python】爬虫:微博找人页面爬虫(四)

    [Python]爬虫:微博找人页面爬虫(四) 从url对列中拿到url,下载页面,返回html的内容,然后解析就可以拿到需要的信息,但是微博的页面不是这样的,如果按照这个做法,返回html的body中 ...

  9. 【Python】爬虫:微博找人页面爬虫(三)

    [Python]爬虫:微博找人页面爬虫(三) 在解决完登录问题后,就来开始下载页面来进行解析,之前提到过有两种类型的页面:列表页和文章页,列表页包含文章页的url和下一页列表页的url,也就是只有先下 ...

最新文章

  1. linux mud 游戏,快刀幻想mud文字传奇-快刀幻想mud神器兑换码-快刀幻想mud下载v1.80-Linux公社...
  2. 谈谈HTML5中的history.pushSate方法,弥补ajax导致浏览器前进后退无效的问题
  3. android开发--ListView中的getView原理
  4. linux中安装vsftpd出现的问题
  5. Leetcode 150. 逆波兰表达式求值 解题思路及C++实现
  6. struts2的bean标签和set标签
  7. HDU 2795 Billboard (线段树+贪心)
  8. android mp4语音识别,怎样用语音识别将一段视频转化为文字, 比如:百度的语音识别api...
  9. Eclipse或者Myeclipse卡,慢的解决方法
  10. sqlite的Query方法操作和参数详解
  11. ssm欢欢宠物医院管理系统的设计与实现毕业设计源码171734
  12. Java 强制删除文件或目录
  13. 基于B_spline 的非刚性形变
  14. 【Pranet】论文及代码解读(RFB与aggregation部分)——Cavy岚
  15. Timus 1104. Don’t Ask Woman about Her Age
  16. 环游西游看项目管理(附上项目管理工具)
  17. OpenAI 强化学习 SpiningUP 中文文档 中文教程
  18. Excel 替换 回车
  19. 快学scala第二版笔记
  20. python爬虫菜鸟教程-Python数据分析,学习路径拆解及资源推荐

热门文章

  1. P1146 硬币翻转 python题解
  2. 乐理分析笔记(二) 莫扎特 土耳其进行曲
  3. 在线画图软件项目结构图
  4. 转C#操作Word辅助类(word2003)
  5. python将一个组数分成几个相同元素的数组,末位少了不补齐
  6. Python 爬虫 中国行政区划信息爬取 (初学者)
  7. WMI_04_常见的WMI类的属性
  8. 计算机课玩手机检讨500,上学带手机检讨书500字范文(精选6篇)
  9. 【IIOT】欧姆龙PLC数采之CJ2系列
  10. 二维码背后的隐忧:扫码点单之后,谁从餐桌上拿走了你的信息?