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 相关文章推荐
Python3基础之函数用法
Aug 13 Python
独特的python循环语句
Nov 20 Python
从django的中间件直接返回请求的方法
May 30 Python
详解Python安装scrapy的正确姿势
Jun 26 Python
django缓存配置的几种方法详解
Jul 16 Python
python石头剪刀布小游戏(三局两胜制)
Jan 20 Python
Python3利用Dlib实现摄像头实时人脸检测和平铺显示示例
Feb 21 Python
简单了解python gevent 协程使用及作用
Jul 22 Python
django正续或者倒序查库实例
May 19 Python
详解pycharm的python包opencv(cv2)无代码提示问题的解决
Jan 29 Python
如何用python绘制雷达图
Apr 24 Python
Python下载商品数据并连接数据库且保存数据
Mar 31 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字符串分割函数用法实例
2015/03/17 PHP
PHP基于工厂模式实现的计算器实例
2015/07/16 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
2019/09/12 PHP
一端时间轮换的广告
2006/06/26 Javascript
js正则表达exec与match的区别说明
2014/01/29 Javascript
jQuery实现瀑布流布局详解(PC和移动端)
2020/09/01 Javascript
jQuery模仿京东/天猫商品左侧分类导航菜单效果
2016/06/29 Javascript
Bootstrap基本组件学习笔记之面板(14)
2016/12/08 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
js仿微信公众平台打标签功能
2017/04/08 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
vue将时间戳转换成自定义时间格式的方法
2018/03/02 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
Angular6中使用Swiper的方法示例
2018/07/09 Javascript
微信小程序实现折叠展开效果
2018/07/19 Javascript
vue实现的下拉框功能示例
2019/01/29 Javascript
微信小程序API—获取定位的详解
2019/04/30 Javascript
vue集成chart.js的实现方法
2019/08/20 Javascript
vue3.0+vue-router+element-plus初实践
2020/12/02 Vue.js
微信小程序自定义胶囊样式
2020/12/27 Javascript
Python查看多台服务器进程的脚本分享
2014/06/11 Python
python实现web方式logview的方法
2015/08/10 Python
python对于requests的封装方法详解
2019/01/03 Python
Python实现计算对象的内存大小示例
2019/07/10 Python
基于python及pytorch中乘法的使用详解
2019/12/27 Python
Python使用sys.exc_info()方法获取异常信息
2020/07/23 Python
Python学习笔记之装饰器
2020/08/06 Python
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
美国性感内衣店:Yandy
2018/06/12 全球购物
面向对象概念面试题(.NET)
2016/11/04 面试题
大学生职业生涯规划书模版
2013/12/30 职场文书
2014年减负工作总结
2014/12/10 职场文书
医德医风个人总结
2015/02/28 职场文书
红色经典电影观后感
2015/06/18 职场文书
Javascript中的解构赋值语法详解
2021/04/02 Javascript
Python中Cookies导出某站用户数据的方法
2021/05/17 Python