详解用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中copy()方法的使用
May 21 Python
python字典DICT类型合并详解
Aug 17 Python
Python Tkinter实现简易计算器功能
Jan 30 Python
用十张图详解TensorFlow数据读取机制(附代码)
Feb 06 Python
python实现快速排序的示例(二分法思想)
Mar 12 Python
对numpy中的transpose和swapaxes函数详解
Aug 02 Python
python生成n个元素的全组合方法
Nov 13 Python
python制作简单五子棋游戏
Jun 18 Python
python 批量添加的button 使用同一点击事件的方法
Jul 17 Python
使用python telnetlib批量备份交换机配置的方法
Jul 25 Python
Python range与enumerate函数区别解析
Feb 28 Python
通过Python扫描代码关键字并进行预警的实现方法
May 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排序算法的复习和总结
2012/02/15 PHP
PHP_SELF,SCRIPT_NAME,REQUEST_URI区别
2014/12/24 PHP
PHP编写的图片验证码类文件分享
2016/06/06 PHP
laravel 修改.htaccess文件 重定向public的解决方法
2019/10/12 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
checkbox使用示例
2013/08/23 Javascript
用js实现in_array的方法
2013/11/05 Javascript
javascipt:filter过滤介绍及使用
2014/09/10 Javascript
jQuery.extend 函数及用法详细
2015/09/06 Javascript
JS+DIV+CSS排版布局实现美观的选项卡效果
2015/10/10 Javascript
Windows下用PyCharm和Visual Studio开始Python编程
2015/10/26 Javascript
WordPress 单页面上一页下一页的实现方法【附代码】
2016/03/10 Javascript
Bootstrap每天必学之附加导航(Affix)插件
2016/04/25 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
JS+canvas绘制的动态机械表动画效果
2017/09/12 Javascript
基于ant design日期控件使用_仅月份的操作
2020/10/27 Javascript
Python re模块介绍
2014/11/30 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
Python实现的字典值比较功能示例
2018/01/08 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
Python中logger日志模块详解
2020/08/04 Python
pycharm 实现调试窗口恢复
2021/02/05 Python
CSS3图片旋转特效(360/60/-360度)
2013/10/10 HTML / CSS
TheFork葡萄牙:欧洲领先的在线餐厅预订平台
2019/05/27 全球购物
澳大利亚体育和露营装备在线/实体零售商:Find Sports
2020/06/03 全球购物
挂牌仪式主持词
2014/03/20 职场文书
超市活动计划书
2014/04/24 职场文书
专项法律服务方案
2014/06/11 职场文书
2014年社区国庆节活动方案
2014/09/16 职场文书
一般党员对照检查材料
2014/09/24 职场文书
2014年维稳工作总结
2014/11/18 职场文书
捐书活动倡议书
2015/04/27 职场文书
党内外群众意见范文
2015/06/02 职场文书
单位考核鉴定意见
2015/06/05 职场文书
导游词之镜泊湖
2019/12/09 职场文书
MySQL触发器的使用
2021/05/24 MySQL