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去除所有html标签的方法
May 05 Python
利用 Monkey 命令操作屏幕快速滑动
Dec 07 Python
用python找出那些被“标记”的照片
Apr 20 Python
python中is与双等于号“==”的区别示例详解
Nov 21 Python
python实现自动发送邮件发送多人、群发、多附件的示例
Jan 23 Python
利用Python复制文件的9种方法总结
Sep 02 Python
python zip()函数使用方法解析
Oct 31 Python
flask框架蓝图和子域名配置详解
Jan 25 Python
Pytorch转onnx、torchscript方式
May 25 Python
keras 使用Lambda 快速新建层 添加多个参数操作
Jun 10 Python
使用python批量修改XML文件中图像的depth值
Jul 22 Python
Django项目创建及管理实现流程详解
Oct 13 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
PHP4实际应用经验篇(9)
2006/10/09 PHP
PHP运行环境配置与开发环境的配置(图文教程)
2013/06/04 PHP
php轻量级的性能分析工具xhprof的安装使用
2015/08/12 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
Laravel中log无法写入问题的解决
2017/06/17 PHP
PHP有序表查找之插值查找算法示例
2018/02/10 PHP
看了就知道什么是JSON
2007/12/09 Javascript
JS 实现双色表格实现代码
2009/11/24 Javascript
JavaScript模拟实现继承的方法
2015/03/30 Javascript
jQuery的animate函数实现图文切换动画效果
2015/05/03 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
Angular4 反向代理Details实践
2018/05/30 Javascript
vue中Axios的封装与API接口的管理详解
2018/08/09 Javascript
在Vue中获取组件声明时的name属性方法
2018/09/12 Javascript
创建echart多个联动的示例代码
2018/11/23 Javascript
JQuery Ajax执行跨域请求数据的解决方案
2018/12/10 jQuery
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
JS数组降维的实现Array.prototype.concat.apply([], arr)
2020/04/28 Javascript
基于JavaScript实现简单的轮播图
2021/03/03 Javascript
使用Python获取Linux系统的各种信息
2014/07/10 Python
Python生成随机MAC地址
2015/03/10 Python
python如何获取服务器硬件信息
2017/05/11 Python
Python PyQt5实现的简易计算器功能示例
2017/08/23 Python
python获取文件路径、文件名、后缀名的实例
2018/04/23 Python
python实现守护进程、守护线程、守护非守护并行
2018/05/05 Python
python模块导入的方法
2019/10/24 Python
python神经网络编程实现手写数字识别
2020/05/27 Python
HTML5本地存储之Database Storage应用介绍
2013/01/06 HTML / CSS
PacSun官网:加州生活方式服装、鞋子和配饰
2018/03/10 全球购物
银行实习生自我鉴定范文
2013/09/19 职场文书
战友聚会邀请函
2014/01/18 职场文书
入党介绍人评语
2014/05/06 职场文书
死亡赔偿协议书
2015/01/28 职场文书
只用20行Python代码实现屏幕录制功能
2021/06/02 Python
ORM模型框架操作mysql数据库的方法
2021/07/25 MySQL