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编程实现的简单Web服务器示例
Jun 22 Python
使用python编写监听端
Apr 12 Python
Python django使用多进程连接mysql错误的解决方法
Oct 08 Python
python itchat给指定联系人发消息的方法
Jun 11 Python
pytorch中的自定义数据处理详解
Jan 06 Python
Jupyter Notebook打开任意文件夹操作
Apr 14 Python
Python变量格式化输出实现原理解析
Aug 06 Python
Python Sqlalchemy如何实现select for update
Oct 12 Python
详解Python中的GIL(全局解释器锁)详解及解决GIL的几种方案
Jan 29 Python
使用pandas读取表格数据并进行单行数据拼接的详细教程
Mar 03 Python
Python基础之赋值,浅拷贝,深拷贝的区别
Apr 30 Python
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
Jun 11 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+Html+缓存
2006/11/25 PHP
php5 mysql分页实例代码
2008/04/10 PHP
php加密之discuz内容经典加密方式实例详解
2017/02/04 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
2019/10/17 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
validator验证控件使用代码
2010/11/23 Javascript
javascript jq 弹出层实例
2013/08/25 Javascript
JS获取下拉列表所选中的TEXT和Value的实现代码
2014/01/11 Javascript
动态加载jquery库的方法
2014/02/12 Javascript
深入探寻javascript定时器
2015/01/02 Javascript
javascript面向对象之对象的深入理解
2015/01/13 Javascript
深入理解JavaScript系列(49):Function模式(上篇)
2015/03/04 Javascript
JavaScript 里的类数组对象
2015/04/08 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
JavaScript中使用webuploader实现上传视频功能(demo)
2017/04/10 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
微信小程序时间轴实现方法示例
2019/01/14 Javascript
深入理解vue中的slot与slot-scope
2019/04/22 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
vue 翻页组件vue-flip-page效果
2020/02/05 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
解决vue-cli输入命令vue ui没效果的问题
2020/11/17 Javascript
[05:35]DOTA2英雄梦之声_第13期_拉比克
2014/06/21 DOTA
python实现识别相似图片小结
2016/02/22 Python
Python实现统计文本文件字数的方法
2017/05/05 Python
Python实现读取字符串按列分配后按行输出示例
2018/04/17 Python
应用OpenCV和Python进行SIFT算法的实现详解
2019/08/21 Python
Pycharm编辑器功能之代码折叠效果的实现代码
2020/10/15 Python
Currentbody法国:健康与美容高科技产品
2020/08/16 全球购物
回门宴父母答谢词
2014/01/26 职场文书
教师年度考核评语
2014/04/28 职场文书
行政专员求职信范文
2014/05/03 职场文书
食堂厨师岗位职责
2014/08/25 职场文书
家庭贫困证明
2014/09/23 职场文书
话题作文之自信作文
2019/11/15 职场文书
Nginx反向代理及负载均衡如何实现(基于linux)
2021/03/31 Servers