代码:

# _*_ 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. [Deepin 15] sudo source /etc/profile 提示找不到 source 命令(切换到 root 用户:sudo su)

    在 Deepin/Ubuntu 系统 中,因为修改了下 配置文件,然后执行 source 命令重新加载配置文件,结果: sudo source /etc/profile 提示找不到 source 命令 ...

  2. [Node.js]连接mongodb

    摘要 前面介绍了node.js操作mysql以及redis的内容,这里继续学习操作mongodb的内容. 安装驱动 安装命令 cnpm install mongodb 安装成功 数据库操作 因为mon ...

  3. Delphi 包的设计思想及它与PAS、BPL、DCU、DLL、OXC的关系

    一.Delphi中各种文件的介绍,及其关系. OXC: ActiveX控件.会被安装到某一个组件包DPK中,在Imports中会创建PAS.DCU.DCR三个文件. DLL: 动态链接库文件,它的Ex ...

  4. Spring boot配置多个Redis数据源操作实例

    原文:https://www.jianshu.com/p/c79b65b253fa Spring boot配置多个Redis数据源操作实例 在SpringBoot是项目中整合了两个Redis的操作实例 ...

  5. tms mqtt

    tms mqtt 功能概述 MQTT客户端组件 可用于VCL,FMX和LCL应用 支持Windows,iOS,Android,macOS,Linux,Raspberry Pi 实现完整的MQTT规范, ...

  6. python测试开发django-24.表单提交之get请求

    前言 通常我们需要在html页面上输入框里面输入数据,比如登录的时候,输入账号和密码,点提交按钮. 从html把数据提交到服务端,服务端接收数据后判断提交的数据,然后做出对应的响应,这么一整个流程就是 ...

  7. centos 7 版本升级nginx

    1.首先下载对应最新版nginx wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ng ...

  8. 《Web性能权威指南》

    <Web性能权威指南> 基本信息 原书名:High performance browser networking 原出版社: O'Reilly Media 作者: (加)Ilya Grig ...

  9. Orchard之创建列表

    一:首先需要确保 List Module 的开始 即: Enable 之后,左边的列表中,多了一个 List 功能菜单. 二:为 Content type 选定 Cotainable 不再赘述. 三: ...

  10. C# 获取文件的MIME类型

    在C#中获取文件的MIME类型(Content Type)的方法如下 一.使用MimeMapping类 在System.Web程序集中,当前为静态类,就一个获取 // // 摘要: // 映射文档扩展 ...