详解用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的类实例属性访问规则探讨
Jan 30 Python
python好玩的项目—色情图片识别代码分享
Nov 07 Python
Python中import机制详解
Nov 14 Python
python中dir()与__dict__属性的区别浅析
Dec 10 Python
对python的unittest架构公共参数token提取方法详解
Dec 17 Python
用Python写一个模拟qq聊天小程序的代码实例
Mar 06 Python
PyTorch 随机数生成占用 CPU 过高的解决方法
Jan 13 Python
Python selenium 加载并保存QQ群成员,去除其群主、管理员信息的示例代码
May 28 Python
解决keras,val_categorical_accuracy:,0.0000e+00问题
Jul 02 Python
python 安装移动复制第三方库操作
Jul 13 Python
python中if嵌套命令实例讲解
Feb 25 Python
OpenCV-Python实现油画效果的实例
Jun 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面向对象编程快速入门
2006/10/09 PHP
php生成文件
2007/01/15 PHP
php实现微信公众号无限群发
2015/10/11 PHP
php实现三级级联下拉框
2016/04/17 PHP
PHP获取表单数据与HTML嵌入PHP脚本的实现
2017/02/09 PHP
自制PHP框架之路由与控制器
2017/05/07 PHP
php + nginx项目中的权限详解
2017/05/23 PHP
PDO::commit讲解
2019/01/27 PHP
Underscore.js 的模板功能介绍与应用
2012/12/24 Javascript
jquery实现手风琴效果实例代码
2013/11/15 Javascript
jQuery遍历json中多个map的方法
2015/02/12 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
Javascript实现网络监测的方法
2015/07/31 Javascript
微信小程序  简单实例(阅读器)的实例开发
2016/09/29 Javascript
Web前端开发之水印、图片验证码
2016/11/27 Javascript
vuejs2.0实现一个简单的分页示例
2017/02/22 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
基于elementUI实现图片预览组件的示例代码
2019/03/31 Javascript
微信小程序图表插件wx-charts用法实例详解
2019/05/20 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
JavaScript中条件语句的优化技巧总结
2020/12/04 Javascript
使用Python中的greenlet包实现并发编程的入门教程
2015/04/16 Python
python实现类之间的方法互相调用
2018/04/29 Python
Python3中bytes类型转换为str类型
2018/09/27 Python
Python2和Python3.6环境解决共存问题
2018/11/09 Python
使用python画社交网络图实例代码
2019/07/10 Python
Python如何使用队列方式实现多线程爬虫
2020/05/12 Python
HTML5如何实现元素拖拽
2016/03/11 HTML / CSS
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
自我鉴定的范文
2013/10/03 职场文书
办公室主任岗位承诺书
2014/05/29 职场文书
社区综治宣传月活动总结
2014/07/02 职场文书
毕业证代领委托书
2014/09/26 职场文书
2015年幼儿园班主任个人工作总结
2015/10/22 职场文书
创业计划之特色精品店
2019/08/12 职场文书