代码:

# _*_ coding:utf-8 _*_
import urllib2
import re
#import sys #reload(sys)
#sys.setdefaultencoding('utf-8') class Tool:
removeImg = re.compile(r'<p class="f_center".*?</p>')
removeAddr = re.compile(r'<a.*?>|</a>')
replaceLine = re.compile(r'<tr>|<div>|</div>|</p>')
replaceTD = re.compile(r'<td>')
replacePara = re.compile(r'<p.*?>')
replaceBR = re.compile(r'<br<br>|<br>')
removeExtraTag = re.compile(r'<.*?>') def replace(self,text):
text = re.sub(self.removeImg,"",text)
text = re.sub(self.removeAddr,"",text)
text = re.sub(self.replaceLine,"\n",text)
text = re.sub(self.replaceTD,"\t",text)
text = re.sub(self.replacePara,"\n"+" ",text)
text = re.sub(self.replaceBR,"\n",text)
text = re.sub(self.removeExtraTag,"",text)
return text.strip() class WYXW:
def __init__(self,baseUrl):
self.baseURL = baseUrl
self.user_agent = 'Mozilla/4.0 (compatible;MSIE 5.5; Windows NT)'
self.headers = {'User-Agent':self.user_agent}
#self.file = None
self.fileName = u'网易新闻'
self.tool = Tool() def get_homepage(self):
url = self.baseURL
request = urllib2.Request(url,headers = self.headers)
response = urllib2.urlopen(request)
content = response.read().decode('utf-8','ignore')
#print content#.encode('gbk','ignore')
return content def extract_url(self,homepage):
pattern = "http://news.163.com/\d{2}/\d{4}/\d{2}/\w{16}.html"
news_url = re.findall(pattern,homepage)
#print news_url
return news_url def extract_sub_web_time(self,sub_web):
pattern = re.compile(r'\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2}',re.S)
time = re.findall(pattern,sub_web)
print time[0]
return time[0] def extract_sub_web_source(self,sub_web):
pattern = re.compile(r'<a id="ne_article_source".*?>(.*?)</a>')
source = re.findall(pattern,sub_web)
print source[0]
return source[0] def extract_sub_web_title(self,sub_web):
#pattern = "<title>.+</title>"
#pattern = '<h1 id="h1title" class="ep-h1">(.*?)</h1>'
pattern = re.compile(r'<h1 id="h1title" class="ep-h1">(.*?)</h1>',re.S)
title = re.findall(pattern,sub_web)
if title is not None:
print title[0]
return title[0]
else:
return None def extract_sub_web_content(self,sub_web):
#pattern = "<div id=\"Cnt-Main-Article-QQ\".*</div>"
pattern = re.compile(r'<div id="endText".*?>(.*?)<!.*?-->',re.S)
content = re.findall(pattern,sub_web)
#print content[0]
if content is not None:
return content[0]
else:
return None def writeData(self,fName):
if fName is not None:
file = open(fName + '.txt',"w+")
else:
file = open(self.fileName + '.txt',"w+")
homepage = self.get_homepage()
news_urls = self.extract_url(homepage)
for url in news_urls:
print url
web = urllib2.urlopen(url).read()
title = self.extract_sub_web_title(web).strip()
content = self.extract_sub_web_content(web)
time = self.extract_sub_web_time(web).strip()
source = self.extract_sub_web_source(web).strip()
if content is not None:
content = self.tool.replace(content)
news = title + "\n\n" + time + "\t" + source + "\n\n" + content + "\n"
file.write(news)
sep = "\n" + "-------------------------------------------------------------------------" + "\n"
file.write(sep)
print u"新闻写入成功" + "\n" baseUrl = "http://news.163.com"
wyxw = WYXW(baseUrl)
wyxw.writeData(None)

Python爬虫实战(三):爬网易新闻的更多相关文章

  1. Python爬虫实战三之实现山东大学无线网络掉线自动重连

    综述 最近山大软件园校区QLSC_STU无线网掉线掉的厉害,连上之后平均十分钟左右掉线一次,很是让人心烦,还能不能愉快地上自习了?能忍吗?反正我是不能忍了,嗯,自己动手,丰衣足食!写个程序解决掉它! ...

  2. Python爬虫实战之爬取百度贴吧帖子

    大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 对百度贴吧的任意帖子进行抓取 指定是否只抓取楼主发帖 ...

  3. Python爬虫实战——反爬策略之模拟登录【CSDN】

    在<Python爬虫实战-- Request对象之header伪装策略>中,我们就已经讲到:=="在header当中,我们经常会添加两个参数--cookie 和 User-Age ...

  4. Python爬虫实战三之爬取嗅事百科段子

    一.前言 俗话说,上班时间是公司的,下班了时间才是自己的.搞点事情,写个爬虫程序,每天定期爬取点段子,看着自己爬的段子,也是一种乐趣. 二.Python爬取嗅事百科段子 1.确定爬取的目标网页 首先我 ...

  5. Python爬虫实战之爬取糗事百科段子

    首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...

  6. Python爬虫实战之爬取糗事百科段子【华为云技术分享】

    首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...

  7. Python爬虫实战:爬取腾讯视频的评论

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 易某某 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...

  8. Python爬虫实战:爬糗事百科的段子

    一个偶然的机会接触了Python,感觉很好用,但是一直在看c++啥的,也没系统学习.用过之后也荒废了许久.之前想建个公众号自动爬糗事百科的段子,但是没能建起来,真是尴尬,代码上传的服务器上之后,不能正 ...

  9. Python爬虫实战——反爬机制的解决策略【阿里】

    这一次呢,让我们来试一下"CSDN热门文章的抓取". 话不多说,让我们直接进入CSND官网. (其实是因为我被阿里的反爬磨到没脾气,不想说话--) 一.URL分析 输入" ...

  10. 原创:Python爬虫实战之爬取美女照片

    这个素材是出自小甲鱼的python教程,但源码全部是我原创的,所以,猥琐的不是我 注:没有用header(总会报错),暂时不会正则表达式(马上要学了),以下代码可能些许混乱,不过效果还是可以的. 爬虫 ...

随机推荐

  1. delphi SPCOMM的一些用法注意

      使用串口SPCOMM接收数据的时候0x11和0x13无法接受,从时间间隔上看来可以接收,但是无法显示.网上查错误得: --------------------------------------- ...

  2. JavaScript 检查IP

    //---------------------------------------------------------- // 功能:检查IP // 参数: // strpart ip地址 // 返回 ...

  3. 【python】python彻底卸载的方法【windows安装版卸载的示例】

    要想彻底干净的卸载python,如果是使用的安装版的话,其实很简单.[windows安装版] 就是点击安装包. 例如,当前你安装的版本是3.6.5,你想要把它卸载掉. 查看python版本的命令: 只 ...

  4. Android Studio 出现 Gradle's dependency cache may be corrupt 错误分析

    http://blog.csdn.net/u014231734/article/details/41913775 情况说明: 之前下载了 Android Studio 1.0rc2候选版,那时候把 S ...

  5. 网易游戏2015年暑期实习生面试经历-游戏研发project师

    首先,我还是先介绍一下网易游戏吧.引用别人的一段话 作者:王选易.出处: http://www.cnblogs.com/neverdie/ 欢迎转载 .也请保留这段声明.假设你喜欢这篇文章,请点[推荐 ...

  6. Linux内核:分析coredump文件 - 内核代码崩溃

    转自:http://blog.csdn.net/guowenyan001/article/details/12975221 一.分析Core文件 1.1 找到core文件目录,启动mycrash:my ...

  7. Unity3d-Particle System系统的学习(一)

    最近看了下Unity3d的粒子系统的相关视频,并且动手操作了下,感觉自己的美工技能又增进了下(开个小玩笑),发现粒子系统所需要记忆的东西还是有点多的. 所以为了不让自己遗忘某些知识点,我准备发布成博客 ...

  8. java.io.IOException: Attempted read from closed stream解决

    在HttpClient请求的时候,返回结果解析时出现java.io.IOException: Attempted read from closed stream. 异常,解决 原因是EntityUti ...

  9. 转: Linux --- Supervisor的作用与配置

    supervisor管理进程,是通过fork/exec的方式将这些被管理的进程当作supervisor的子进程来启动,所以我们只需要将要管理进程的可执行文件的路径添加到supervisor的配置文件中 ...

  10. bash 设置

    export COLUMNS=500 $* 将所有命令行参数当做单个文本值包含 $@ 将所有命令行参数当做独立的文本值包含 $# 命令行参数数目 $? 最近使用的前端进程的退出状态码 $- 当前命令选 ...