详解用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的*args和**kwargs用法
Nov 01 Python
python基础教程之lambda表达式使用方法
Feb 12 Python
python进阶教程之动态类型详解
Aug 30 Python
Python实现SSH远程登陆,并执行命令的方法(分享)
May 08 Python
对pandas中to_dict的用法详解
Jun 05 Python
Numpy中的mask的使用
Jul 21 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
Aug 30 Python
Python3数字求和的实例
Feb 19 Python
python3实现表白神器
Apr 09 Python
python自动化之Ansible的安装教程
Jun 13 Python
Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸实例
Mar 04 Python
Python基于locals返回作用域字典
Oct 17 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
收音机的保养
2021/03/01 无线电
Bootstrap+PHP实现多图上传功能实例详解
2018/04/08 PHP
设定php简写功能的方法
2019/11/28 PHP
JCalendar 日历控件 v1.0 beta[兼容IE&Firefox] 有文档和例子
2007/05/30 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
2015/05/12 Javascript
通用javascript代码判断版本号是否在版本范围之间
2015/11/29 Javascript
Javascript的表单验证长度
2016/03/16 Javascript
VUEJS实战之修复错误并且美化时间(2)
2016/06/13 Javascript
深入理解React中es6创建组件this的方法
2016/08/29 Javascript
Javascript 闭包详解及实例代码
2016/11/30 Javascript
详解Vue2.0配置mint-ui踩过的那些坑
2018/04/23 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
Vue中使用matomo进行访问流量统计的实现
2019/11/05 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
解决vue net :ERR_CONNECTION_REFUSED报错问题
2020/08/13 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
Python time模块详解(常用函数实例讲解,非常好)
2014/04/24 Python
在Python中使用swapCase()方法转换大小写的教程
2015/05/20 Python
Python3生成手写体数字方法
2018/01/30 Python
Python 绘图库 Matplotlib 入门教程
2018/04/19 Python
浅谈flask源码之请求过程
2018/07/26 Python
Python3.7实现中控考勤机自动连接
2018/08/28 Python
PyQt打开保存对话框的方法和使用详解
2019/02/27 Python
Python列表的切片实例讲解
2019/08/20 Python
django执行数据库查询之后实现返回的结果集转json
2020/03/31 Python
关于tensorflow softmax函数用法解析
2020/06/30 Python
Python 如何操作 SQLite 数据库
2020/08/17 Python
详解Django中views数据查询使用locals()函数进行优化
2020/08/24 Python
基于Python正确读取资源文件
2020/09/14 Python
Black Halo官方网站:购买连衣裙、礼服和连体裤
2018/06/13 全球购物
行政人员岗位职责
2013/12/08 职场文书
应聘自荐信
2013/12/14 职场文书
2015年车间安全管理工作总结
2015/05/13 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
浅谈mysql执行过程以及顺序
2021/05/12 MySQL
Redis+AOP+自定义注解实现限流
2022/06/28 Redis