Python正则抓取网易新闻的方法示例


Posted in Python onApril 21, 2017

本文实例讲述了Python正则抓取网易新闻的方法。分享给大家供大家参考,具体如下:

自己写了些关于抓取网易新闻的爬虫,发现其网页源代码与网页的评论根本就对不上,所以,采用了抓包工具得到了其评论的隐藏地址(每个浏览器都有自己的抓包工具,都可以用来分析网站)

如果仔细观察的话就会发现,有一个特殊的,那么这个就是自己想要的了

Python正则抓取网易新闻的方法示例

然后打开链接就可以找到相关的评论内容了。(下图为第一页内容)

Python正则抓取网易新闻的方法示例

接下来就是代码了(也照着大神的改改写写了)。

#coding=utf-8
import urllib2
import re
import json
import time
class WY():
  def __init__(self):
    self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/534.24 (KHTML, like '}
    self.url='http://comment.news.163.com/data/news3_bbs/df/B9IBDHEH000146BE_1.html'
  def getpage(self,page):
    full_url='http://comment.news.163.com/cache/newlist/news3_bbs/B9IBDHEH000146BE_'+str(page)+'.html'
    return full_url
  def gethtml(self,page):
    try:
      req=urllib2.Request(page,None,self.headers)
      response = urllib2.urlopen(req)
      html = response.read()
      return html
    except urllib2.URLError,e:
      if hasattr(e,'reason'):
        print u"连接失败",e.reason
        return None
  #处理字符串
  def Process(self,data,page):
    if page == 1:
      data=data.replace('var replyData=','')
    else:
      data=data.replace('var newPostList=','')
    reg1=re.compile(" \[<a href=''>")
    data=reg1.sub(' ',data)
    reg2=re.compile('<\\\/a>\]')
    data=reg2.sub('',data)
    reg3=re.compile('<br>')
    data=reg3.sub('',data)
    return data
  #解析json
  def dealJSON(self):
    with open("WY.txt","a") as file:
      file.write('ID'+'|'+'评论'+'|'+'踩'+'|'+'顶'+'\n')
    for i in range(1,12):
      if i == 1:
        data=self.gethtml(self.url)
        data=self.Process(data,i)[:-1]
        value=json.loads(data)
        file=open('WY.txt','a')
        for item in value['hotPosts']:
          try:
            file.write(item['1']['f'].encode('utf-8')+'|')
            file.write(item['1']['b'].encode('utf-8')+'|')
            file.write(item['1']['a'].encode('utf-8')+'|')
            file.write(item['1']['v'].encode('utf-8')+'\n')
          except:
            continue
        file.close()
        print '--正在采集%d/12--'%i
        time.sleep(5)
      else:
        page=self.getpage(i)
        data = self.gethtml(page)
        data = self.Process(data,i)[:-2]
        # print data
        value=json.loads(data)
        # print value
        file=open('WY.txt','a')
        for item in value['newPosts']:
          try:
            file.write(item['1']['f'].encode('utf-8')+'|')
            file.write(item['1']['b'].encode('utf-8')+'|')
            file.write(item['1']['a'].encode('utf-8')+'|')
            file.write(item['1']['v'].encode('utf-8')+'\n')
          except:
            continue
        file.close()
        print '--正在采集%d/12--'%i
        time.sleep(5)
if __name__ == '__main__':
  WY().dealJSON()

以上就是我爬取的代码了。

Python 相关文章推荐
使用grappelli为django admin后台添加模板
Nov 18 Python
Python内置函数之filter map reduce介绍
Nov 30 Python
python通过apply使用元祖和列表调用函数实例
May 26 Python
python统计文本字符串里单词出现频率的方法
May 26 Python
python3 实现的人人影视网站自动签到
Jun 19 Python
flask框架使用orm连接数据库的方法示例
Jul 16 Python
Python文件常见操作实例分析【读写、遍历】
Dec 10 Python
python 定时任务去检测服务器端口是否通的实例
Jan 26 Python
FFT快速傅里叶变换的python实现过程解析
Oct 21 Python
Python队列、进程间通信、线程案例
Oct 25 Python
Django app配置多个数据库代码实例
Dec 17 Python
Python 实现键盘鼠标按键模拟
Nov 18 Python
Python中shape计算矩阵的方法示例
Apr 21 #Python
Python使用正则表达式抓取网页图片的方法示例
Apr 21 #Python
用python找出那些被“标记”的照片
Apr 20 #Python
python实现12306火车票查询器
Apr 20 #Python
Python编程修改MP3文件名称的方法
Apr 19 #Python
Python实现将罗马数字转换成普通阿拉伯数字的方法
Apr 19 #Python
Python连接SQLServer2000的方法详解
Apr 19 #Python
You might like
常用的PHP数据库操作方法(MYSQL版)
2011/06/08 PHP
php中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
php实现字符串首字母大写和单词首字母大写的方法
2015/03/14 PHP
PHPMailer使用QQ邮箱实现邮件发送功能
2017/08/18 PHP
JavaScript对象模型-执行模型
2008/04/28 Javascript
js URL参数的拼接方法比较
2012/02/15 Javascript
jquery获取被勾选的checked(选中)的那一行的3列和4列的值
2013/07/04 Javascript
js的alert弹出框出现乱码解决方案
2013/09/02 Javascript
javascript获取当前鼠标坐标的方法
2015/01/10 Javascript
常见的javascript跨域通信方法
2015/12/31 Javascript
原生JS取代一些JQuery方法的简单实现
2016/09/20 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
2016/10/26 Javascript
jQuery阻止事件冒泡实例分析
2018/07/03 jQuery
详解微信小程序实现仿微信聊天界面(各种细节处理)
2019/02/17 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
JavaScript判断浏览器运行环境的详细方法
2019/06/30 Javascript
vue 实现一个简单的全局调用弹窗案例
2020/09/10 Javascript
[05:23]DOTA2-DPC中国联赛2月1日Recap集锦
2021/03/11 DOTA
使用Python判断质数(素数)的简单方法讲解
2016/05/05 Python
Python随机生成均匀分布在三角形内或者任意多边形内的点
2017/12/14 Python
http请求 request失败自动重新尝试代码示例
2018/01/25 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
Python面向对象基础入门之设置对象属性
2018/12/11 Python
django框架基于模板 生成 excel(xls) 文件操作示例
2019/06/19 Python
python中PS 图像调整算法原理之亮度调整
2019/06/28 Python
django云端留言板实例详解
2019/07/22 Python
tensorflow实现读取模型中保存的值 tf.train.NewCheckpointReader
2020/02/10 Python
一款html5 canvas实现的图片玻璃碎片特效
2014/09/11 HTML / CSS
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
澳大利亚Mocha官方网站:包、钱包、珠宝和配饰
2019/07/18 全球购物
使用索引有什么好处
2016/07/27 面试题
广州一家公司的.NET面试题
2016/06/11 面试题
信息管理专业学生自荐信格式
2013/09/22 职场文书
物业管理计划书
2014/01/10 职场文书
一文搞懂python异常处理、模块与包
2021/06/26 Python
Java服务调用RestTemplate与HttpClient的使用详解
2022/06/21 Java/Android