Python爬虫实战(三):爬网易新闻
代码:
# _*_ 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爬虫实战(三):爬网易新闻的更多相关文章
- Python爬虫实战三之实现山东大学无线网络掉线自动重连
综述 最近山大软件园校区QLSC_STU无线网掉线掉的厉害,连上之后平均十分钟左右掉线一次,很是让人心烦,还能不能愉快地上自习了?能忍吗?反正我是不能忍了,嗯,自己动手,丰衣足食!写个程序解决掉它! ...
- Python爬虫实战之爬取百度贴吧帖子
大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 对百度贴吧的任意帖子进行抓取 指定是否只抓取楼主发帖 ...
- Python爬虫实战——反爬策略之模拟登录【CSDN】
在<Python爬虫实战-- Request对象之header伪装策略>中,我们就已经讲到:=="在header当中,我们经常会添加两个参数--cookie 和 User-Age ...
- Python爬虫实战三之爬取嗅事百科段子
一.前言 俗话说,上班时间是公司的,下班了时间才是自己的.搞点事情,写个爬虫程序,每天定期爬取点段子,看着自己爬的段子,也是一种乐趣. 二.Python爬取嗅事百科段子 1.确定爬取的目标网页 首先我 ...
- Python爬虫实战之爬取糗事百科段子
首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...
- Python爬虫实战之爬取糗事百科段子【华为云技术分享】
首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的 ...
- Python爬虫实战:爬取腾讯视频的评论
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 易某某 PS:如有需要Python学习资料的小伙伴可以加点击下方链 ...
- Python爬虫实战:爬糗事百科的段子
一个偶然的机会接触了Python,感觉很好用,但是一直在看c++啥的,也没系统学习.用过之后也荒废了许久.之前想建个公众号自动爬糗事百科的段子,但是没能建起来,真是尴尬,代码上传的服务器上之后,不能正 ...
- Python爬虫实战——反爬机制的解决策略【阿里】
这一次呢,让我们来试一下"CSDN热门文章的抓取". 话不多说,让我们直接进入CSND官网. (其实是因为我被阿里的反爬磨到没脾气,不想说话--) 一.URL分析 输入" ...
- 原创:Python爬虫实战之爬取美女照片
这个素材是出自小甲鱼的python教程,但源码全部是我原创的,所以,猥琐的不是我 注:没有用header(总会报错),暂时不会正则表达式(马上要学了),以下代码可能些许混乱,不过效果还是可以的. 爬虫 ...
随机推荐
- 改进架构,实现动态数据源,减少java维护
怎样不用写java代码来完毕开发? 对于大部分的产品和项目来说.页面变化是很头痛的事情.每次小功能上线,新客户到来,都须要进行定制改造,不断的开发维护.每次开发一方面要修改页面,一方面要修改serve ...
- Android开发:仿美团下拉列表菜单,帮助类,复用简单
近期在项目中须要用到下拉菜单.公司比較推崇美团的下拉菜单,于是要实现该功能.想着.这个功能应该是一个常常会用到的.于是何不写一个帮助类,仅仅要往这个类里面传入特定的參数,既能够实现下来菜单,并且还能够 ...
- .Net Discovery系列之十-深入理解平台机制与性能影响(上)
转眼间<.Net Discovery>系列文章已经推出1年了,本文为该系列的第10-13篇文章,在本文中将对以前所讲的.Net平台知识做一个小小的总结与机制分析,引出并重点介绍这些机制对程 ...
- C#复制数组的两种方式,以及效率比较
如何高效地进行数组复制? 如果把一个变量值复制给另外一个数组变量,那么2个变量指向托管堆上同一个引用. 如果想在托管堆上创建另外的一份数组实例,通常使用Array.Copy方法. class Prog ...
- 集群服务器下使用SpringBoot @Scheduled注解定时任务
原文:https://blog.csdn.net/huyang1990/article/details/78551578 SpringBoot提供了 Schedule模块完美支持定时任务的执行 在实际 ...
- Java异常(二) 《Effective Java》中关于异常处理的几条建议
概要 本章是从<Effective Java>摘录整理出来的关于异常处理的几条建议.内容包括:第1条: 只针对不正常的情况才使用异常第2条: 对于可恢复的条件使用被检查的异常,对于程序错误 ...
- 利用MPMoviePlayerViewController 播放视频 iOS
方法一: @property (nonatomic, strong) MPMoviePlayerController *player; NSString *url = [[NSBundle mainB ...
- ASP.NET MVC:模块化/插件式架构实现(转载)
I’ve recently spent quite a lot of time researching and prototyping different ways to create a plugi ...
- centOS配置国内镜像
本文以163为例, cd /etc/yum.repos.d/wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
- [Web 前端 ] 还在用浮动吗?CSS flex布局你了解多少?
cp from : https://blog.csdn.net/wwwxuewen/article/details/80859764 传统的布局:围绕盒子模型(border.margin.paddin ...