详解用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类继承用法实例分析
Oct 10 Python
详解Python当中的字符串和编码
Apr 25 Python
学习python之编写简单乘法口诀表实现代码
Feb 27 Python
用python实现简单EXCEL数据统计的实例
Jan 24 Python
Python 比较两个数组的元素的异同方法
Aug 17 Python
Python通过future处理并发问题
Oct 17 Python
python的pandas工具包,保存.csv文件时不要表头的实例
Jun 14 Python
Python django框架应用中实现获取访问者ip地址示例
May 17 Python
python pandas写入excel文件的方法示例
Jun 25 Python
python pandas cumsum求累计次数的用法
Jul 29 Python
python GUI库图形界面开发之PyQt5信号与槽的高级使用技巧(自定义信号与槽)详解与实例
Mar 06 Python
解决Keras使用GPU资源耗尽的问题
Jun 22 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 正确解码javascript中通过escape编码后的字符
2010/01/28 PHP
PHP最常用的ini函数分析 针对PHP.ini配置文件
2010/04/22 PHP
PHP extract 将数组拆分成多个变量的函数
2010/06/30 PHP
PHP扩展框架之Yaf框架的安装与使用
2016/05/18 PHP
js 禁用只读文本框获得焦点时的退格键
2010/04/25 Javascript
Knockoutjs快速入门(经典)
2012/12/24 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
第十章之巨幕页头缩略图与警告框组件
2016/04/25 Javascript
js实现悬浮窗效果(支持拖动)
2017/03/09 Javascript
简单好用的nodejs 爬虫框架分享
2017/03/26 NodeJs
Angular 4.x 路由快速入门学习
2017/05/03 Javascript
php main 与 iframe 相互通讯类(js+php同域/跨域)
2017/09/14 Javascript
JS解决position:sticky的兼容性问题的方法
2017/10/17 Javascript
select标签设置默认选中的选项方法
2018/03/02 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
在Vue-cli里应用Vuex的state和mutations方法
2018/09/16 Javascript
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
2019/03/29 Javascript
微信小程序云开发之使用云数据库
2019/05/17 Javascript
使用python开发vim插件及心得分享
2014/11/04 Python
Python文件右键找不到IDLE打开项解决办法
2015/06/08 Python
Django中日期处理注意事项与自定义时间格式转换详解
2018/08/06 Python
python运用pygame库实现双人弹球小游戏
2019/11/25 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
Python zip函数打包元素实例解析
2019/12/11 Python
python如何实时获取tcpdump输出
2020/09/16 Python
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
幼儿园毕业教师感言
2014/02/21 职场文书
网吧最新创业计划书范文
2014/03/27 职场文书
《云房子》教学反思
2014/04/20 职场文书
最美孝心少年事迹材料
2014/08/15 职场文书
2015年乡镇食品安全工作总结
2015/10/22 职场文书
安装配置mysql及Navicat prenium的详细流程
2021/06/10 MySQL
java executor包参数处理功能 
2022/02/15 Java/Android
Win11筛选键导致键盘失灵怎么解决? Win11关闭筛选键的技巧
2022/04/08 数码科技
mysql数据库如何转移到oracle
2022/12/24 MySQL