详解用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 相关文章推荐
使用BeautifulSoup爬虫程序获取百度搜索结果的标题和url示例
Jan 19 Python
Python实现的一个找零钱的小程序代码分享
Aug 25 Python
用python读写excel的方法
Nov 18 Python
Python获取SQLite查询结果表列名的方法
Jun 21 Python
使用apidocJs快速生成在线文档的实例讲解
Feb 07 Python
使用pycharm生成代码模板的实例
May 23 Python
Python 3.8中实现functools.cached_property功能
May 29 Python
对DJango视图(views)和模版(templates)的使用详解
Jul 17 Python
python实现socket+threading处理多连接的方法
Jul 23 Python
tensorflow 限制显存大小的实现
Feb 03 Python
python中sys模块的介绍与实例
Apr 17 Python
Python绘画好看的星空图
Mar 17 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/01/01 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
2010/10/22 PHP
PHP删除HTMl标签的实现代码
2013/06/30 PHP
深入解析php中的foreach问题
2013/06/30 PHP
PHP把小数转成整数3种方法
2014/06/30 PHP
在b/s开发中经常用到的javaScript技术
2006/08/23 Javascript
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
jquery 元素控制(追加元素/追加内容)介绍及应用
2013/04/21 Javascript
javascript解决innerText浏览器兼容问题思路代码
2013/05/17 Javascript
QQ空间顶部折页撕开效果示例代码
2014/06/15 Javascript
jQuery中的read和JavaScript中的onload函数的区别
2014/08/27 Javascript
node+express+ejs制作简单页面上手指南
2014/11/26 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
JS中setTimeout的巧妙用法前端函数节流
2016/03/24 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
如何防止INPUT按回车自动提交表单FORM
2016/12/06 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
微信小程序实现给循环列表添加点击样式实例
2017/04/26 Javascript
js中el表达式的使用和非空判断方法
2018/03/28 Javascript
详解各版本React路由的跳转的方法
2018/05/10 Javascript
移动端吸顶fixbar的解决方案详解
2019/07/17 Javascript
vue中defineProperty和Proxy的区别详解
2020/11/30 Vue.js
linux服务器快速卸载安装node环境(简单上手)
2021/02/22 Javascript
python不带重复的全排列代码
2013/08/13 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
扩展Django admin的list_filter()可使用范围方法
2019/08/21 Python
python tkinter组件摆放方式详解
2019/09/16 Python
Python ADF 单位根检验 如何查看结果的实现
2020/06/03 Python
Python如何生成xml文件
2020/06/04 Python
Eton丹麦官网:精美的男式衬衫
2020/05/27 全球购物
介绍下static、final、abstract区别
2015/01/30 面试题
本科毕业生求职自荐信
2014/04/09 职场文书
企业群众路线教育实践活动心得体会
2014/11/03 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书
奖学金发言稿(范文)
2019/08/21 职场文书