详解用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 相关文章推荐
pyside写ui界面入门示例
Jan 22 Python
python基础教程之自定义函数介绍
Aug 29 Python
python爬虫入门教程之点点美女图片爬虫代码分享
Sep 02 Python
Python新手实现2048小游戏
Mar 31 Python
Python制作Windows系统服务
Mar 25 Python
详解Python安装scrapy的正确姿势
Jun 26 Python
python生成多个只含0,1元素的随机数组或列表的实例
Nov 12 Python
Python timer定时器两种常用方法解析
Jan 20 Python
PyQt5+python3+pycharm开发环境配置教程
Mar 24 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
Dec 18 Python
详解python3 GUI刷屏器(附源码)
Feb 18 Python
Django中的DateTimeField和DateField实现
Feb 24 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下保存远程图片到本地的办法
2010/08/08 PHP
php strrpos()与strripos()函数
2013/08/31 PHP
php查询mysql数据库并将结果保存到数组的方法
2015/03/18 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
PHP 实现浏览记录并按日期分组
2017/05/11 PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
2019/10/11 PHP
PHP终止脚本运行三种实现方法详解
2020/09/01 PHP
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
如何动态的导入js文件具体该怎么实现
2014/01/14 Javascript
JS获取各种宽度、高度的简单介绍
2014/12/19 Javascript
jquery实现移动端点击图片查看大图特效
2020/09/11 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
bootstrap响应式表格实例详解
2017/05/15 Javascript
JavaScript中document.referrer的用法详解
2017/07/04 Javascript
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
解决vue脚手架项目打包后路由视图不显示的问题
2018/09/20 Javascript
Vue路由前后端设计总结
2019/08/06 Javascript
Vue如何基于es6导入外部js文件
2020/05/15 Javascript
Python实现检测服务器是否可以ping通的2种方法
2015/01/01 Python
Python多进程并发与多线程并发编程实例总结
2018/02/08 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
python实现连续图文识别
2018/12/18 Python
Python创建空列表的字典2种方法详解
2020/02/13 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
关于python中导入文件到list的问题
2020/10/31 Python
详解Python模块化编程与装饰器
2021/01/16 Python
欧洲最大的美妆零售网站:Feelunique
2017/01/14 全球购物
美国性感女装网站:bebe
2017/03/04 全球购物
银行柜员应聘推荐信范文
2013/11/24 职场文书
大专毕业生求职信
2014/07/05 职场文书
暑期社会实践心得体会
2014/09/02 职场文书
公司职员入党自传书
2015/06/26 职场文书
Nginx快速入门教程
2021/03/31 Servers
mysql部分操作
2021/04/05 MySQL
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS
redis protocol通信协议及使用详解
2022/07/15 Redis