详解用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 相关文章推荐
python处理中文编码和判断编码示例
Feb 26 Python
python将ip地址转换成整数的方法
Mar 17 Python
Python selenium 三种等待方式解读
Sep 15 Python
利用numpy+matplotlib绘图的基本操作教程
May 03 Python
pandas DataFrame 根据多列的值做判断,生成新的列值实例
May 18 Python
Python 字符串换行的多种方式
Sep 06 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
Dec 05 Python
Numpy对数组的操作:创建、变形(升降维等)、计算、取值、复制、分割、合并
Aug 28 Python
Python 寻找局部最高点的实现
Dec 05 Python
简单了解python字符串前面加r,u的含义
Dec 26 Python
Python爬虫过程解析之多线程获取小米应用商店数据
Nov 14 Python
用sleep间隔进行python反爬虫的实例讲解
Nov 30 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
PHP编码规范-php coding standard
2007/03/16 PHP
php $_ENV为空的原因分析
2009/06/01 PHP
php中的三元运算符使用说明
2011/07/03 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
2016/07/18 PHP
PHP自定义函数判断是否为Get、Post及Ajax提交的方法
2017/07/27 PHP
学习ExtJS(二) Button常用方法
2009/10/07 Javascript
原生JavaScript实现合并多个数组示例
2014/09/21 Javascript
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
js方法数据验证的简单实例
2016/09/17 Javascript
jquery购物车结算功能实现方法
2020/10/29 Javascript
ES6(ECMAScript 6)新特性之模板字符串用法分析
2017/04/01 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
NodeJS安装图文教程
2018/04/19 NodeJs
小程序扫描普通链接二维码跳转小程序指定界面方法
2019/05/07 Javascript
微信小程序实现日期格式化和倒计时
2020/11/01 Javascript
javascript中的数据类型检测方法详解
2019/08/07 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
新手该如何学python怎么学好python?
2008/10/07 Python
Python中线程的MQ消息队列实现以及消息队列的优点解析
2016/06/29 Python
遍历python字典几种方法总结(推荐)
2016/09/11 Python
使用Django启动命令行及执行脚本的方法
2018/05/29 Python
PHP实现发送和接收JSON请求
2018/06/07 Python
Python实现矩阵相乘的三种方法小结
2018/07/26 Python
python爬取微信公众号文章
2018/08/31 Python
Python对象中__del__方法起作用的条件详解
2018/11/01 Python
python并发编程 Process对象的其他属性方法join方法详解
2019/08/20 Python
Python制作词云图代码实例
2019/09/09 Python
Ivory Isle Designs美国/加拿大:婚礼和活动文具公司
2018/08/21 全球购物
中科创达面试题
2016/12/28 面试题
分厂厂长岗位职责
2013/12/29 职场文书
仓库管理专业个人的自我评价
2013/12/30 职场文书
初中班主任评语
2014/04/24 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
欢送领导祝酒词
2015/08/12 职场文书
2016党员干部廉洁自律心得体会
2016/01/13 职场文书
高三语文教学反思
2016/02/16 职场文书