详解用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将ip地址转换成整数的方法
Mar 17 Python
深入Python函数编程的一些特性
Apr 13 Python
在windows下快速搭建web.py开发框架方法
Apr 22 Python
Python中max函数用于二维列表的实例
Apr 03 Python
一百行python代码将图片转成字符画
Feb 19 Python
浅析Python 读取图像文件的性能对比
Mar 07 Python
python+opencv像素的加减和加权操作的实现
Jul 14 Python
python 实现多线程下载视频的代码
Nov 15 Python
解决django model修改添加字段报错的问题
Nov 18 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
Jan 15 Python
Python yield生成器和return对比代码实例
Apr 20 Python
python3 删除所有自定义变量的操作
Apr 08 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 MYSQL乱码问题,使用SET NAMES utf8校正
2009/11/30 PHP
php获取URL中带#号等特殊符号参数的解决方法
2014/09/02 PHP
Linux+Nginx+MySQL下配置论坛程序Discuz的基本教程
2015/12/23 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
js取得url地址参数实例
2013/02/22 Javascript
javascript白色简洁计算器
2015/05/04 Javascript
JS特效实现图片自动播放并可控的效果
2015/07/31 Javascript
JavaScript的jQuery库插件的简要开发指南
2015/08/12 Javascript
JavaScript的Backbone.js框架环境搭建及Hellow world示例
2016/05/07 Javascript
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
2016/07/26 NodeJs
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
详解vue事件对象、冒泡、阻止默认行为
2017/03/20 Javascript
JS实现简易的图片拖拽排序实例代码
2017/06/09 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
JavaScript实现图片懒加载的方法分析
2018/07/05 Javascript
Intellij IDEA搭建vue-cli项目的方法步骤
2018/10/20 Javascript
详解vuejs2.0 select 动态绑定下拉框支持多选
2019/04/25 Javascript
记一次react前端项目打包优化的方法
2020/03/30 Javascript
[04:20]DOTA2-DPC中国联赛 正赛 VG vs LBZS 选手采访 1月19日
2021/03/11 DOTA
Python最长公共子串算法实例
2015/03/07 Python
python中异常捕获方法详解
2017/03/03 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
Pycharm使用之设置代码字体大小和颜色主题的教程
2019/07/12 Python
解决Pycharm 包已经下载,但是运行代码提示找不到模块的问题
2019/08/31 Python
python调用接口的4种方式代码实例
2019/11/19 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
CSS3中设置3D变形的transform-style属性详解
2016/05/23 HTML / CSS
某科技软件测试面试题
2013/05/19 面试题
名企HR怎样看待求职信
2014/02/23 职场文书
社团2014年植树节活动总结
2014/03/11 职场文书
小学生春游活动方案
2014/08/20 职场文书
小学生安全教育广播稿
2014/10/20 职场文书
坎儿井导游词
2015/02/09 职场文书
详解TypeScript的基础类型
2022/02/18 Javascript
SQL解决未能删除约束问题drop constraint
2022/05/30 SQL Server