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实现二分查找算法实例
May 26 Python
python实现备份目录的方法
Aug 03 Python
Python函数中的函数(闭包)用法实例
Mar 15 Python
python3音乐播放器简单实现代码
Apr 20 Python
python解决网站的反爬虫策略总结
Oct 26 Python
win与linux系统中python requests 安装
Dec 04 Python
Python 将pdf转成图片的方法
Apr 23 Python
python调用接口的4种方式代码实例
Nov 19 Python
python 爬虫基本使用——统计杭电oj题目正确率并排序
Oct 26 Python
python 通过exifread读取照片信息
Dec 24 Python
python爬虫之利用selenium模块自动登录CSDN
Apr 22 Python
详解Python flask的前后端交互
Mar 31 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类
2006/07/15 PHP
一个多文件上传的例子(原创)
2006/10/09 PHP
利用递归把多维数组转为一维数组的函数
2006/10/09 PHP
PHP中通过ADO调用Access数据库的方法测试不通过
2006/12/31 PHP
php文本转图片自动换行的方法
2013/03/13 PHP
PHP利用APC模块实现文件上传进度条的方法
2015/01/26 PHP
php版微信公众号自定义分享内容实现方法
2016/09/22 PHP
用php+ajax新建流程(请假、进货、出货等)
2017/06/11 PHP
在PHP中输出JS语句以及乱码问题的解决方案
2019/02/13 PHP
jQuery 各种浏览器下获得日期区别
2008/12/22 Javascript
JavaScript中使用replace结合正则实现replaceAll的效果
2010/06/04 Javascript
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
javascript中的delete使用详解
2013/04/11 Javascript
js 赋值包含单引号双引号问题的解决方法
2014/02/26 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
Bootstrap CSS组件之输入框组
2016/12/17 Javascript
微信小程序 扎金花简单实例
2017/02/21 Javascript
微信小程序实现tab切换效果
2017/11/21 Javascript
Vue.js分页组件实现:diVuePagination的使用详解
2018/01/10 Javascript
浅谈Redux中间件的实践
2018/07/27 Javascript
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
[45:52]2018DOTA2亚洲邀请赛 4.1小组赛 A组加赛 LGD vs Liquid
2018/04/02 DOTA
python 随机数使用方法,推导以及字符串,双色球小程序实例
2017/09/12 Python
pycharm远程调试openstack代码
2017/11/21 Python
Python将图片转换为字符画的方法
2020/06/16 Python
python pillow模块使用方法详解
2019/08/30 Python
Python 模拟动态产生字母验证码图片功能
2019/12/24 Python
python实现在一个画布上画多个子图
2020/01/19 Python
使用PyCharm安装pytest及requests的问题
2020/07/31 Python
Conforama西班牙:您的家具、装饰和电器商店
2020/02/21 全球购物
主治医师岗位职责
2013/12/10 职场文书
违反学校规则制度检讨书
2015/01/01 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
教师个人年终总结
2015/02/11 职场文书
中班上学期个人总结
2015/02/12 职场文书
大学生入党自传2015
2015/06/26 职场文书