详解用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 相关文章推荐
简单介绍Python2.x版本中的cmp()方法的使用
May 20 Python
Django与遗留的数据库整合的方法指南
Jul 24 Python
21行Python代码实现拼写检查器
Jan 25 Python
python爬虫入门教程--HTML文本的解析库BeautifulSoup(四)
May 25 Python
利用python获取Ping结果示例代码
Jul 06 Python
python flask中静态文件的管理方法
Mar 20 Python
python 字典中文key处理,读取,比较方法
Jul 06 Python
python将秒数转化为时间格式的实例
Sep 16 Python
pycharm 在windows上编辑代码用linux执行配置的方法
Oct 27 Python
利用Python正则表达式过滤敏感词的方法
Jan 21 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
Jun 13 Python
Python万能模板案例之matplotlib绘制直方图的基本配置
Apr 13 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获取网页内容方法总结
2008/12/04 PHP
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
set_exception_handler函数在ThinkPHP中的用法
2014/10/31 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
PHP页面跳转实现延时跳转的方法
2016/12/10 PHP
利用 fsockopen() 函数开放端口扫描器的实例
2017/08/19 PHP
php实现通过stomp协议连接ActiveMQ操作示例
2020/02/23 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
JavaScript脚本性能优化注意事项
2008/11/18 Javascript
jquery JSON的解析方式
2009/07/25 Javascript
js 去除字符串第一位逗号的方法
2014/06/07 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
node.js中的fs.readlinkSync方法使用说明
2014/12/17 Javascript
如何利用AngularJS打造一款简单Web应用
2015/12/05 Javascript
基于bootstrap实现广告轮播带图片和文字效果
2016/07/22 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
vue省市区三联动下拉选择组件的实现
2017/04/28 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
AngularJS的$location使用方法详解
2017/10/19 Javascript
JS异步函数队列功能实例分析
2017/11/28 Javascript
jQuery+Datatables实现表格批量删除功能【推荐】
2018/10/24 jQuery
2019最新21个MySQL高频面试题介绍
2020/02/06 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
Python中尝试多线程编程的一个简明例子
2015/04/07 Python
使用相同的Apache实例来运行Django和Media文件
2015/07/22 Python
获取Django项目的全部url方法详解
2017/10/26 Python
Django ModelForm组件使用方法详解
2019/07/23 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
SIXPAD智能健身仪英国官网:革命性的训练装备品牌
2018/09/27 全球购物
现代生活方式的家具和装饰:Dot & Bo
2018/12/26 全球购物
蔻驰英国官网:COACH英国
2020/07/19 全球购物
运动会广播稿300字
2014/01/10 职场文书
学雷锋活动总结范文
2014/04/25 职场文书
篮球比赛策划方案
2014/06/05 职场文书