详解用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中os操作文件及文件路径实例汇总
Jan 15 Python
Python二分查找详解
Sep 13 Python
Python中的字典与成员运算符初步探究
Oct 13 Python
利用python3随机生成中文字符的实现方法
Nov 24 Python
python和shell获取文本内容的方法
Jun 05 Python
OpenCV+Python识别车牌和字符分割的实现
Jan 31 Python
Python selenium根据class定位页面元素的方法
Feb 26 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
Mar 05 Python
Python分支语句与循环语句应用实例分析
May 07 Python
python检测服务器端口代码实例
Aug 31 Python
Python编写打字训练小程序
Sep 26 Python
python中def是做什么的
Jun 10 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
pw的一个放后门的方法分析
2007/10/08 PHP
php设计模式 Singleton(单例模式)
2011/06/26 PHP
php数组函数序列 之shuffle()和array_rand() 随机函数使用介绍
2011/10/29 PHP
PHP将整个网站生成HTML纯静态网页的方法总结
2012/02/05 PHP
php curl_init函数用法
2014/01/31 PHP
Yii2中YiiBase自动加载类、引用文件方法分析(autoload)
2016/07/25 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
2017/07/04 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
2020/09/17 PHP
php的lavarel框架中join和orWhere的用法
2020/12/28 PHP
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
jQuery实现模拟marquee标签效果
2015/07/14 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
JavaScript中用let语句声明作用域的用法讲解
2016/05/20 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
jquery实现ajax加载超时提示的方法
2016/07/23 Javascript
基于MVC5和Bootstrap的jQuery TreeView树形控件(二)之数据支持json字符串、list集合
2016/08/11 Javascript
AngularJS入门教程之数据绑定原理详解
2016/11/02 Javascript
JavaScript调试之console.log调试的一个小技巧分享
2017/08/07 Javascript
element-ui循环显示radio控件信息的方法
2018/08/24 Javascript
vue使用v-if v-show页面闪烁,div闪现的解决方法
2018/10/12 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
ES6数组与对象的解构赋值详解
2019/06/14 Javascript
python3模拟百度登录并实现百度贴吧签到示例分享(百度贴吧自动签到)
2014/02/24 Python
Django数据库操作的实例(增删改查)
2017/09/04 Python
Python使用numpy模块创建数组操作示例
2018/06/20 Python
django数据模型(Model)的字段类型解析
2019/12/25 Python
python实现扑克牌交互式界面发牌程序
2020/04/22 Python
Python实现给PDF添加水印的方法
2021/01/25 Python
GC是什么?为什么要有GC?
2013/12/08 面试题
工程力学硕士生的自我评价范文
2013/11/16 职场文书
教师党员个人自我剖析材料
2014/09/29 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书
二手房购房意向书
2015/05/09 职场文书
第一军规观后感
2015/06/12 职场文书
2015年终个人政治思想工作总结
2015/11/24 职场文书
Spring Data JPA的Audit功能审计数据库的变更
2021/06/26 Java/Android