详解用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模块顶层运行的代码引起的一个Bug
Jul 04 Python
在Python的gevent框架下执行异步的Solr查询的教程
Apr 16 Python
Python易忽视知识点小结
May 25 Python
Python中的多行注释文档编写风格汇总
Jun 16 Python
20个常用Python运维库和模块
Feb 12 Python
Python 爬虫之Beautiful Soup模块使用指南
Jul 05 Python
Python 最大概率法进行汉语切分的方法
Dec 14 Python
Python网络爬虫之爬取微博热搜
Apr 18 Python
Django工程的分层结构详解
Jul 18 Python
Django框架静态文件使用/中间件/禁用ip功能实例详解
Jul 22 Python
python使用gdal对shp读取,新建和更新的实例
Mar 10 Python
Python批量删除mysql中千万级大量数据的脚本分享
Dec 03 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和XSS跨站攻击的防范
2007/04/17 PHP
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
xml在joomla表单中的应用详解分享
2012/07/19 PHP
php float不四舍五入截取浮点型字符串方法总结
2013/10/28 PHP
ThinkPHP 3.2 版本升级了哪些内容
2015/03/05 PHP
php 解决扫描二维码下载跳转问题
2017/01/13 PHP
php中照片旋转 (orientation) 问题的正确处理
2017/02/16 PHP
一步一步制作jquery插件Tabs实现过程
2010/07/06 Javascript
JS获取DropDownList的value值与text值的示例代码
2014/01/07 Javascript
jquery中append()与appendto()用法分析
2014/11/14 Javascript
jQuery EasyUI datagrid实现本地分页的方法
2015/02/13 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
canvas实现手机端用来上传用户头像的代码
2016/10/20 Javascript
Vue.js + Nuxt.js 项目中使用 Vee-validate 表单校验
2019/04/22 Javascript
javascript设计模式 ? 中介者模式原理与用法实例分析
2020/04/20 Javascript
Javascript文本框脚本实现方法解析
2020/10/30 Javascript
Python 序列的方法总结
2016/10/18 Python
Python中装饰器学习总结
2018/02/10 Python
python中subprocess批量执行linux命令
2018/04/27 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
numpy中的meshgrid函数的使用
2019/07/31 Python
python爬虫 urllib模块url编码处理详解
2019/08/20 Python
Python使用Pyqt5实现简易浏览器(最新版本测试过)
2020/04/27 Python
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
英国银首饰公司:e&e Jewellery
2021/02/11 全球购物
幼儿园五一活动方案
2014/02/07 职场文书
幼儿园三八妇女节活动方案
2014/03/11 职场文书
中国梦读书活动总结
2014/07/10 职场文书
小学安全汇报材料
2014/08/14 职场文书
2014年质量管理工作总结
2014/12/01 职场文书
2014年节能减排工作总结
2014/12/06 职场文书
2015年客房服务员工作总结
2015/05/15 职场文书
爱国电影观后感
2015/06/19 职场文书
《蓝鲸的眼睛》读后感5篇
2020/01/15 职场文书
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS