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 相关文章推荐
python访问纯真IP数据库的代码
May 19 Python
python求解水仙花数的方法
May 11 Python
浅谈Python中的闭包
Jul 08 Python
python轻松查到删除自己的微信好友
Jan 10 Python
python2爬取百度贴吧指定关键字和图片代码实例
Aug 14 Python
python实现tail -f 功能
Jan 17 Python
Python字典深浅拷贝与循环方式方法详解
Feb 09 Python
浅谈Django中的QueryDict元素为数组的坑
Mar 31 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
Mar 04 Python
Python实现智慧校园自动评教全新版
Jun 18 Python
浅谈Python中对象是如何被调用的
Apr 06 Python
Python实现将多张图片合成MP4视频并加入背景音乐
Apr 28 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
杏林同学录(四)
2006/10/09 PHP
php下使用无限生命期Session的方法
2007/03/16 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
将一维或多维的数组连接成一个字符串的php代码
2010/08/08 PHP
php强制下载类型的实现代码
2011/04/21 PHP
用php简单实现加减乘除计算器
2014/01/06 PHP
php rsa加密解密使用详解
2015/01/14 PHP
php计算税后工资的方法
2015/07/28 PHP
js实现杯子倒水问题自动求解程序
2013/03/25 Javascript
JavaScript调用后台的三种方法实例
2013/10/17 Javascript
nodejs npm package.json中文文档
2014/09/04 NodeJs
Ext JS框架程序中阻止键盘触发回退或者刷新页面的代码分享
2016/06/07 Javascript
卸载安装Node.js与npm过程详解
2016/08/15 Javascript
详解AngularJs ui-router 路由的简单介绍
2017/04/26 Javascript
详解Node.js access_token的获取、存储及更新
2017/06/20 Javascript
微信小程序wepy框架笔记小结
2018/08/08 Javascript
vue自定义标签和单页面多路由的实现代码
2020/05/03 Javascript
JavaScript cookie原理及使用实例
2020/05/08 Javascript
Vue单文件组件开发实现过程详解
2020/07/30 Javascript
原生JS实现音乐播放器
2021/01/26 Javascript
Python的log日志功能及设置方法
2019/07/11 Python
python excel转换csv代码实例
2019/08/26 Python
pytorch 常用线性函数详解
2020/01/15 Python
python实现ip地址的包含关系判断
2020/02/07 Python
pygame实现飞机大战
2020/03/11 Python
Python开发之身份证验证库id_validator验证身份证号合法性及根据身份证号返回住址年龄等信息
2020/03/20 Python
完美解决torch.cuda.is_available()一直返回False的玄学方法
2021/02/06 Python
CSS+jQuery+PHP+MySQL实现的在线答题功能
2015/04/25 HTML / CSS
英国优质家居用品网上品牌:URBANARA
2018/06/01 全球购物
亚洲颇具影响力的男性在线购物零售商:His
2019/11/24 全球购物
八年级音乐教学反思
2014/01/09 职场文书
市场开发与营销专业求职信范文
2014/05/01 职场文书
党员批评与自我批评范文
2014/09/23 职场文书
签约仪式致辞
2015/07/30 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript