详解用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 10 Python
easy_install python包安装管理工具介绍
Feb 10 Python
python获取文件版本信息、公司名和产品名的方法
Oct 05 Python
Python实现的多线程http压力测试代码
Feb 08 Python
python 系统调用的实例详解
Jul 11 Python
浅谈用Python实现一个大数据搜索引擎
Nov 28 Python
Python中xrange与yield的用法实例分析
Dec 26 Python
Python实现的基于优先等级分配糖果问题算法示例
Apr 25 Python
Python3内置模块random随机方法小结
Jul 13 Python
opencv转换颜色空间更改图片背景
Aug 20 Python
PYTHON EVAL的用法及注意事项解析
Sep 06 Python
用openCV和Python 实现图片对比,并标识出不同点的方式
Dec 19 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
Content-type 的说明
2006/10/09 PHP
PHP 八种基本的数据类型小结
2011/06/01 PHP
php实现的常见排序算法汇总
2014/09/08 PHP
PHP获取当前相对于域名目录的方法
2015/06/26 PHP
PHP空值检测函数与方法汇总
2017/11/19 PHP
thinkphp 5框架实现登陆,登出及session登陆状态检测功能示例
2019/10/10 PHP
js 页面输出值
2008/11/30 Javascript
JS中处理与当前时间间隔的函数代码
2012/05/23 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
jQuery回车实现登录简单实现
2013/08/20 Javascript
JavaScript动态创建div属性和样式示例代码
2013/10/09 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
jquery实现点击label的同时触发文本框点击事件的方法
2015/06/05 Javascript
JS验证图片格式和大小并预览的简单实例
2016/10/11 Javascript
写给vue新手们的vue渲染页面教程
2017/09/01 Javascript
js闭包学习心得总结
2018/04/17 Javascript
vue中组件的3种使用方式详解
2019/03/23 Javascript
nodejs对mongodb数据库的增加修删该查实例代码
2020/01/05 NodeJs
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
Vue左滑组件slider使用详解
2020/08/21 Javascript
跟老齐学Python之从格式化表达式到方法
2014/09/28 Python
python服务器端收发请求的实现代码
2014/09/29 Python
使用Python对SQLite数据库操作
2017/04/06 Python
Python3使用turtle绘制超立方体图形示例
2018/06/19 Python
解决python通过cx_Oracle模块连接Oracle乱码的问题
2018/10/18 Python
python实现键盘控制鼠标移动
2020/11/27 Python
python django框架中使用FastDFS分布式文件系统的安装方法
2019/06/10 Python
测试工程师程序员求职信范文
2014/02/20 职场文书
行政部岗位职责范本
2014/03/13 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
党员公开承诺书
2014/03/25 职场文书
师德师风个人自我剖析材料
2014/09/27 职场文书
课改心得体会范文
2016/01/25 职场文书
详解TypeScript的基础类型
2022/02/18 Javascript
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技
Mysql的Table doesn't exist问题及解决
2022/12/24 MySQL