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中的高级数据结构详解
Mar 27 Python
python常见的格式化输出小结
Dec 15 Python
Python基于回溯法子集树模板解决野人与传教士问题示例
Sep 11 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
Nov 21 Python
Python自定义线程池实现方法分析
Feb 07 Python
Flask之请求钩子的实现
Dec 23 Python
详解python opencv、scikit-image和PIL图像处理库比较
Dec 26 Python
基于python3生成标签云代码解析
Feb 18 Python
解决json中ensure_ascii=False的问题
Apr 03 Python
pycharm安装及如何导入numpy
Apr 03 Python
python中count函数知识点浅析
Dec 17 Python
Django项目如何正确配置日志(logging)
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
深入php处理整数函数的详解
2013/06/09 PHP
PHP 下载文件时自动添加bom头的方法实例
2014/01/10 PHP
PHP的Laravel框架中使用AdminLTE模板来编写网站后台界面
2016/03/21 PHP
PHP微信开发之文本自动回复
2016/06/23 PHP
PHP数组操作简单案例分析
2016/10/15 PHP
浅谈PHP的反射机制
2016/12/15 PHP
Use Word to Search for Files
2007/06/15 Javascript
javascript 拖放效果实现代码
2010/01/22 Javascript
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
jquery iframe操作详细解析
2013/11/20 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
javascript操作excel生成报表示例
2014/05/08 Javascript
js带前后翻页的图片切换效果代码分享
2015/09/08 Javascript
基于Jquery easyui 选中特定的tab
2015/11/17 Javascript
js实现文字垂直滚动和鼠标悬停效果
2015/12/31 Javascript
jQuery.Form上传文件操作
2017/02/05 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
JS中min函数实例讲解
2019/02/18 Javascript
ES6的异步操作之promise用法和async函数的具体使用
2019/12/06 Javascript
javascript 函数的暂停和恢复实例详解
2020/04/25 Javascript
TensorFlow神经网络优化策略学习
2018/03/09 Python
如何卸载python插件
2020/07/08 Python
法国大使拉杆箱官网:DELSEY Paris
2018/03/20 全球购物
MADE法国:提供原创设计师家具
2018/09/18 全球购物
DC Shoes澳大利亚官方网上商店:购买DC鞋子
2019/10/25 全球购物
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
C语言基础笔试题
2013/04/27 面试题
简述数据库的设计过程
2015/06/22 面试题
伦敦奥运会的口号
2014/06/21 职场文书
房屋维修申请报告
2015/05/18 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
重温经典:乔布斯在斯坦福大学的毕业演讲(双语)
2019/08/26 职场文书
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers
Python保存并浏览用户的历史记录
2022/04/29 Python