详解用python写网络爬虫-爬取新浪微博评论


Posted in Python onMay 10, 2019

新浪微博需要登录才能爬取,这里使用m.weibo.cn这个移动端网站即可实现简化操作,用这个访问可以直接得到的微博id。

分析新浪微博的评论获取方式得知,其采用动态加载。所以使用json模块解析json代码

单独编写了字符优化函数,解决微博评论中的嘈杂干扰字符

本函数是用python写网络爬虫的终极目的,所以采用函数化方式编写,方便后期优化和添加各种功能

# -*- coding:gbk -*-
import re
import requests
import json
from lxml import html
#测试微博4054483400791767
comments=[]

def get_page(weibo_id):
  url='https://m.weibo.cn/status/{}'.format(weibo_id)
  html=requests.get(url).text
  regcount=r'"comments_count": (.*?),'
  comments_count=re.findall(regcount,html)[-1]
  comments_count_number=int(comments_count)
  page=int(comments_count_number/10)
  return page-1

def opt_comment(comment):
  tree=html.fromstring(comment)
  strcom=tree.xpath('string(.)')
  reg1=r'回复@.*?:'
  reg2=r'回覆@.*?:'
  reg3=r'//@.*'
  newstr=''
  comment1=re.subn(reg1,newstr,strcom)[0]
  comment2=re.subn(reg2,newstr,comment1)[0]
  comment3=re.subn(reg3,newstr,comment2)[0]
  return comment3

def get_responses(id,page):
  url="https://m.weibo.cn/api/comments/show?id={}&page={}".format(id,page)
  response=requests.get(url)
  return response

def get_weibo_comments(response):
  json_response=json.loads(response.text)
  for i in range(0,len(json_response['data'])):
    comment=opt_comment(json_response['data'][i]['text'])
    comments.append(comment)


weibo_id=input("输入微博id,自动返回前5页评论:")
weibo_id=int(weibo_id)
print('\n')
page=get_page(weibo_id)
for page in range(1,page+1):
  response=get_responses(weibo_id,page)
  get_weibo_comments(response)

for com in comments:
  print(com)
print(len(comments))

以上所述是小编给大家介绍的python爬取新浪微博评论详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
Django实现的自定义访问日志模块示例
Jun 23 Python
python遍历序列enumerate函数浅析
Oct 17 Python
python实现音乐下载的统计
Jun 20 Python
python实现扫描局域网指定网段ip的方法
Apr 16 Python
python实现字符串完美拆分split()的方法
Jul 16 Python
tensorflow实现测试时读取任意指定的check point的网络参数
Jan 21 Python
TensorFlow实现保存训练模型为pd文件并恢复
Feb 06 Python
python词云库wordcloud的使用方法与实例详解
Feb 17 Python
Flask中jinja2的继承实现方法及实例
Mar 03 Python
Python中super().__init__()测试以及理解
Dec 06 Python
Python OpenGL基本配置方式
May 20 Python
python实现双向链表原理
May 25 Python
python的turtle库使用详解
May 10 #Python
详解Python sys.argv使用方法
May 10 #Python
Python3.5 + sklearn利用SVM自动识别字母验证码方法示例
May 10 #Python
python lxml中etree的简单应用
May 10 #Python
基于Python的PIL库学习详解
May 10 #Python
python导入坐标点的具体操作
May 10 #Python
python简单验证码识别的实现方法
May 10 #Python
You might like
11个PHP 分页脚本推荐
2011/08/15 PHP
PHP警告Cannot use a scalar value as an array的解决方法
2012/01/11 PHP
php实现文件编码批量转换
2014/03/10 PHP
ThinkPHP中的三大自动简介
2014/08/22 PHP
php的4种常见运行方式
2015/03/20 PHP
完美解决phpexcel导出到xls文件出现乱码的问题
2016/10/29 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
jQuery 使用手册(七)
2009/09/23 Javascript
两个listbox实现选项的添加删除和搜索
2013/03/01 Javascript
js中的replace方法使用介绍
2013/10/28 Javascript
javascript监听鼠标滚轮事件浅析
2014/06/05 Javascript
Easyui Treegrid改变默认图标的方法
2016/04/29 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
2016/05/11 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
jquery uploadify隐藏上传进度的实现方法
2017/02/06 Javascript
js canvas实现简单的图像扩散效果
2020/06/28 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
关于vue2强制刷新,解决页面不会重新渲染的问题
2019/10/29 Javascript
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
Tensorflow 利用tf.contrib.learn建立输入函数的方法
2018/02/08 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
2018/06/11 Python
python pyheatmap包绘制热力图
2018/11/09 Python
python3实现网页版raspberry pi(树莓派)小车控制
2020/02/12 Python
python使用OpenCV模块实现图像的融合示例代码
2020/04/10 Python
python实现粒子群算法
2020/10/15 Python
Fresh馥蕾诗英国官网:法国LVMH集团旗下高端天然护肤品牌
2018/11/01 全球购物
西班牙用户之间买卖视频游戏的平台:Wakkap
2020/03/21 全球购物
Kappa英国官方在线商店:服装和运动器材
2020/11/22 全球购物
现金会计岗位职责
2013/12/05 职场文书
家长会学生家长演讲稿
2013/12/29 职场文书
模具数控专业自荐信
2014/01/27 职场文书
投标文件签署授权委托书范本
2014/10/12 职场文书
高中地理教学反思
2016/02/19 职场文书
详解MySQL的主键查询为什么这么快
2022/04/03 MySQL