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(总会报错),暂时不会正则表达式(马上要学了),以下代码可能些许混乱,不过效果还是可以的. 爬虫 ...
随机推荐
- jstat命令 -- Java虚拟机监控统计工具
http://blog.sina.com.cn/s/blog_5f5716580100u76r.html 语法:jstat [generalOption | outputOptions vmid [i ...
- go标准库DOC与 raft
http://studygolang.com/static/pkgdoc/index.html https://github.com/avelino/awesome-go#database
- 恶意软件正在利用SSLserver窃取用户个人信息!
安全套接层协议(SSL)及安全传输层协议(TLS)旨在提供一个安全.加密的client和server之间的连接网络.为进一步进行身份验证和加密,server必须提供证书,从而直接有效地证明其身份. 使 ...
- Consul替代Eureka
原文:https://www.cnblogs.com/ityouknow/p/9340591.html 在上个月我们知道 Eureka 2.X 遇到困难停止开发了,但其实对国内的用户影响甚小,一方面国 ...
- libxml2.dylb 罗致<libxml/tree.h> 老是找不到头文件
libxml2.dylb 导致<libxml/tree.h> 老是找不到头文件 添加了libxml2.dylb的framework ,结果还是引用不了<libxml/tree.h&g ...
- 【elasticsearch】关于elasticSearch的基础概念了解【转载】
转载原文:https://www.cnblogs.com/chenmc/p/9516100.html 该作者本系列文章,写的很详尽 ================================== ...
- Material Designer的低版本兼容实现(一)—— 简介 & 目录
很长一段时间没写东西了,其实是因为最近在研究Material Designer这个东西,熬夜熬的身体也不是很好了.所以就偷懒没写东西,这回开的这个系列文章是讲如何将Material Designer在 ...
- 用PopupWindow实现弹出菜单(弹出的菜单采用自定义布局)
用PopupWindow实现弹出菜单是一个比较好的方式.当然我们还有一个类PopupMenu也能实现弹出菜单,但那个太过于局限了,所以不是很推荐. 这个实例的效果是这样的:点击按钮后,一个菜 ...
- Guava CharMatcher
概述 CharMatcher提供了多种对字符串处理的方法, 它的主要意图有: 1. 找到匹配的字符 2. 处理匹配的字符 CharMatcher内部主要实现包括两部分: 1. 实现了大量公用内部类, ...
- FinalizableReference, FinalizablePhantomReference, FinalizableReferenceQueue
FinalizableReference /* * Copyright (C) 2007 The Guava Authors * * Licensed under the Apache License ...