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多线程(python多线程简明教程)
Jun 09 Python
python抓取网页时字符集转换问题处理方案分享
Jun 19 Python
Python自定义类的数组排序实现代码
Aug 28 Python
django 2.2和mysql使用的常见问题
Jul 18 Python
Python笔记之工厂模式
Nov 20 Python
python 并发下载器实现方法示例
Nov 22 Python
pytorch 自定义参数不更新方式
Jan 06 Python
Python的赋值、深拷贝与浅拷贝的区别详解
Feb 12 Python
Python连接SQLite数据库并进行增册改查操作方法详解
Feb 18 Python
python数据库编程 ODBC方式实现通讯录
Mar 27 Python
Python生成器传参数及返回值原理解析
Jul 22 Python
详解tensorflow之过拟合问题实战
Nov 01 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
神族 Protoss 剧情介绍
2020/03/14 星际争霸
DC这些乐高系列动画电影你看过几部?
2020/04/09 欧美动漫
通过curl模拟post和get方式提交的表单类
2014/04/23 PHP
php数组键名技巧小结
2015/02/17 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
php微信公众号开发之简答题
2018/10/20 PHP
PHP查找一列有序数组是否包含某值的方法
2020/02/07 PHP
php将字符串转换为数组实例讲解
2020/05/05 PHP
JS限制上传图片大小不使用控件在本地实现
2012/12/19 Javascript
jQuery $命名冲突解决方案汇总
2014/11/13 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
2016/07/08 Javascript
关于js函数解释(包括内嵌,对象等)
2016/11/20 Javascript
值得分享的Bootstrap Table使用教程
2016/11/23 Javascript
bootstrap Table服务端处理分页(后台是.net)
2017/10/19 Javascript
mpvue微信小程序多列选择器用法之省份城市选择的实现
2019/03/07 Javascript
js代码实现轮播图
2020/05/04 Javascript
[01:36:57]【09DOTA2第一视角】小骷髅
2014/04/16 DOTA
[05:05]给小松五分钟系列 第二期介绍为什么打DOTA2
2014/07/02 DOTA
浅析Python中的多重继承
2015/04/28 Python
Python使用Pycrypto库进行RSA加密的方法详解
2016/06/06 Python
python 对txt中每行内容进行批量替换的方法
2018/07/11 Python
python查询文件夹下excel的sheet名代码实例
2019/04/02 Python
Python Django 添加首页尾页上一页下一页代码实例
2019/08/21 Python
python爬虫 正则表达式解析
2019/09/28 Python
Python zip函数打包元素实例解析
2019/12/11 Python
美国购买当代和现代家具网站:MODTEMPO
2018/07/20 全球购物
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
机械设计制造专业个人求职信
2013/09/25 职场文书
女方回门宴答谢词
2014/01/14 职场文书
国庆节活动总结
2014/08/26 职场文书
个人向公司借款协议书
2014/10/09 职场文书
教师学习中国梦心得体会
2016/01/05 职场文书
2019年销售人员的职业生涯规划书
2019/03/25 职场文书
如何使用 resize 实现图片切换预览功能
2021/08/23 HTML / CSS
i7 6700处理器相当于i5几代
2022/04/19 数码科技