代码:

# _*_ 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. 打印函数 lodop

    Lodop属性和方法详解 例子:LODOP.PRINT_INIT("打印任务名");LODOP.SET_PRINT_COPIES(2);bdhtml=window.document ...

  2. 在ASP.NET MVC中实现Select多选

    我们知道,在ASP.NET MVC中实现多选Select的话,使用Html.ListBoxFor或Html.ListBox方法就可以.在实际应用中,到底该如何设计View Model, 控制器如何接收 ...

  3. javascript:currentStyle和getComputedStyle的兼容写法

    currentStyle:获取计算后的样式,也叫当前样式.最终样式. 优点:可以获取元素的最终样式,包括浏览器的默认值,而不像style只能获取行间样式,所以更常用到. 注意:不能获取复合样式如bac ...

  4. centos7虚拟机(vmware)通过U盘传文件

    centos7虚拟机(vmware)通过U盘传文件 centos7虚拟机安装以后,WINDOWS给CENTOS7传文件,除了在CENTOS7安装SAMBA外,其实通过U盘也是可以的. CENTOS7对 ...

  5. Informix存储过程

    一.存储过程概述 存储过程是一个用户定义的函数,由存储过程语句(SPL) 和一组SQL语句组成,以可以执行代码形式存储在数据库中,和表.视图.索引等一样,是数据库的一种对象. 存储过程语言SPL(St ...

  6. 关于面试总结5-python笔试题(递归)

    前言 本篇继续收集一些常见的python笔试题,以基础知识为主,递归是面试最喜欢考的一个问题,不管是做开发还是测试,都无法避免考递归.本篇结合实际案例,讲下几种关于递归的场景. 计算n的阶乘 计算n! ...

  7. javascript游戏引擎

    基于JavaScript开发的游戏是唯一一个能够跨桌面,Web和移动三种平台的.今天,本文向大家推荐一些非常棒的JavaScript游戏开发框架. AD:干货来了,不要等!WOT2015 北京站演讲P ...

  8. log4j生成有日期的日志文件名

    有任务需求,需要输出日志为 文件名+日期格式作为文件保存. 解决方法很简单: log4j.appender.file=org.apache.log4j.DailyRollingFileAppender ...

  9. 转: MySQL5.7 ERROR 1142 (42000)问题

    1,mysql全库导入报错 [root@dev_121_21 ~]# mysql--socket=/usr/local/mysql/mysql.sock --default-character-set ...

  10. SEO如何利用百度知道日引流上千IP

    个人小站长.SEO们经常为网站没有流量而发愁,一个没有流量的网站就像一个不喝水的人,迟早得死.没有流量,就没有PV,也就是说你的网站只是 给你一个人看的,那做站有什么意义呢?网站上所发布的内容都是分享 ...