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高并发异步服务器核心库forkcore使用方法
Nov 26 Python
从零学python系列之教你如何根据图片生成字符画
May 23 Python
Python 实现数据库(SQL)更新脚本的生成方法
Jul 09 Python
Python利用BeautifulSoup解析Html的方法示例
Jul 30 Python
Django与JS交互的示例代码
Aug 23 Python
详解python 爬取12306验证码
May 10 Python
python django下载大的csv文件实现方法分析
Jul 19 Python
如何用Python来搭建一个简单的推荐系统
Aug 07 Python
python 实现return返回多个值
Nov 19 Python
Python netmiko模块的使用
Feb 14 Python
django 实现简单的插入视频
Apr 07 Python
python的html标准库
Apr 29 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
解决phpmyadmin中文乱码问题。。。
2007/01/18 PHP
wordpress之wp-settings.php
2007/08/17 PHP
destoon实现底部添加你是第几位访问者的方法
2014/07/15 PHP
学习php设计模式 php实现原型模式(prototype)
2015/12/07 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
JS兼容浏览器的导出Excel(CSV)文件的方法
2014/05/03 Javascript
jQuery实现数秒后自动提交form的方法
2015/03/05 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
2015/04/12 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
浅谈DOM的操作以及性能优化问题-重绘重排
2017/01/08 Javascript
微信小程序page的生命周期和音频播放及监听实例详解
2017/04/07 Javascript
微信小程序 刷新上拉下拉不会断详细介绍
2017/05/11 Javascript
React如何利用相对于根目录进行引用组件详解
2017/10/09 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
vue生成文件本地打开查看效果的实例
2018/09/06 Javascript
对TypeScript库进行单元测试的方法
2019/07/18 Javascript
详解Python中的文本处理
2015/04/11 Python
简单谈谈python中的lambda表达式
2018/01/19 Python
解决python大批量读写.doc文件的问题
2018/05/08 Python
10分钟教你用Python实现微信自动回复功能
2018/11/28 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
pyinstaller打包单个exe后无法执行错误的解决方法
2019/06/21 Python
Python实现点云投影到平面显示
2020/01/18 Python
python包的导入方式总结
2021/03/02 Python
CSS3 分类菜单效果
2019/05/27 HTML / CSS
浅析CSS3 中的 transition,transform,translate之间区别和作用
2020/03/26 HTML / CSS
节约电力资源的建议书
2014/03/12 职场文书
群众路线教育实践活动剖析材料
2014/09/30 职场文书
群众路线党员个人剖析材料
2014/10/08 职场文书
《鸡兔同笼》教学反思
2016/02/19 职场文书
解决jupyter notebook图片显示模糊和保存清晰图片的操作
2021/04/24 Python
「SHOW BY ROCK!!」“雫シークレットマインド”组合单曲MV公开
2022/03/21 日漫
JavaScript实现两个数组的交集
2022/03/25 Javascript
微软团队与 NASA 科学家和惠普企业(HPE)的工程师合作
2022/04/21 数码科技
生命的关键成分来自太空?陨石说是的
2022/04/29 数码科技
Nginx的gzip相关介绍
2022/05/11 Servers