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连接字符串的方法小结
Jul 13 Python
python之PyMongo使用总结
May 26 Python
机器学习python实战之决策树
Nov 01 Python
python3.6.3转化为win-exe文件发布的方法
Oct 31 Python
Python面向对象之类和对象属性的增删改查操作示例
Dec 14 Python
linux安装python修改默认python版本方法
Mar 31 Python
基于Python的Post请求数据爬取的方法详解
Jun 14 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
Nov 08 Python
音频处理 windows10下python三方库librosa安装教程
Jun 20 Python
Python分类测试代码实例汇总
Jul 23 Python
Django 权限管理(permissions)与用户组(group)详解
Nov 30 Python
python数据分析之用sklearn预测糖尿病
Apr 22 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设计模式 注册表模式(多个类的注册)
2012/02/05 PHP
PHP正则提取不包含指定网址的图片地址的例子
2014/04/21 PHP
phplist及phpmailer(组合使用)通过gmail发送邮件的配置方法
2016/03/30 PHP
php面向对象的用户登录身份验证
2017/06/08 PHP
JS 拼图游戏 面向对象,注释完整。
2009/06/18 Javascript
JQuery 引发两次$(document.ready)事件
2010/01/15 Javascript
JS getMonth()日期函数的值域是0-11
2010/02/15 Javascript
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
JS中引用百度地图并将百度地图的logo和信息去掉
2013/09/29 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
搭建Bootstrap离线文档的方法
2016/12/02 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
详解Angular之constructor和ngOnInit差异及适用场景
2017/06/22 Javascript
使用travis-ci如何持续部署node.js应用详解
2017/07/30 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
vue图片加载失败时用默认图片替换的方法
2019/08/29 Javascript
Win10下python3.5和python2.7环境变量配置教程
2018/09/18 Python
Python3之字节串bytes与字节数组bytearray的使用详解
2019/08/27 Python
PyCharm专业最新版2019.1安装步骤(含激活码)
2019/10/09 Python
pandas实现将日期转换成timestamp
2019/12/07 Python
如何通过Django使用本地css/js文件
2020/01/20 Python
python可迭代对象去重实例
2020/05/15 Python
Python类及获取对象属性方法解析
2020/06/15 Python
python 录制系统声音的示例
2020/12/21 Python
canvas实现烟花的示例代码
2020/01/16 HTML / CSS
匡威帆布鞋美国官网:Converse美国
2016/08/22 全球购物
德国自行车商店:Tretwerk
2019/06/21 全球购物
德国购买门票网站:ADticket.de
2019/10/31 全球购物
广播电视新闻学专业应届生求职信
2013/10/08 职场文书
七一党建活动方案
2014/01/28 职场文书
菜篮子工程实施方案
2014/03/08 职场文书
2015年信访工作总结
2015/04/07 职场文书
交通事故责任认定书
2015/08/06 职场文书