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)
时间: 2024-10-25 21:54:58

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

python爬虫实战(一)----------爬取京东商品信息

本文章的例子仅用于学习之用,如涉及版权隐私信息,请联系本人删除,谢谢. 最近一直在练习使用python爬取不同网站的信息,最终目的是实现一个分布式的网络爬虫框架,可以灵活适用不同的爬取需求. 项目github地址: https://github.com/happyAnger6/anger6Spider 在学习的过程中遇到不少问题,在这里做一下总结,并分享出来,希望有兴趣的朋友批评指正,共同学习共同进步. 本着实用至上的目的,不准备过多讲实现细节和原理,直接通过项目需求来边实战边学习,因此本系列文

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

前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 易某某 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取 http://note.youdao.com/noteshare?id=3054cce4add8a909e784ad934f956cef 一.前提条件 安装了Fiddler了(用于抓包分析) 谷歌或火狐浏览器 如果是谷歌浏览器,还需要给谷歌浏览器安装一个SwitchyOmega插件,用于

python爬虫实战,多线程爬取京东jd html页面:无需登录的网站的爬虫实战

[前言] # 本脚本用来爬取jd的页面:http://list.jd.com/list.html?cat=737,794,870到 # ......http://list.jd.com/list.html?cat=737,794,870&page=11&JL=6_0_0的所有html的内容和图片. # 本脚本仅用于技术交流,请勿用于其他用途 # by River # qq : 179621252 # Date : 2014-12-02 19:00:00 [需求说明] 以京东为示例,爬取页面

python 爬虫实战4 爬取淘宝MM照片

本篇目标 抓取淘宝MM的姓名,头像,年龄 抓取每一个MM的资料简介以及写真图片 把每一个MM的写真图片按照文件夹保存到本地 熟悉文件保存的过程 1.URL的格式 在这里我们用到的URL是 http://mm.taobao.com/json/request_top_list.htm?page=1,问号前面是基地址,后面的参数page是代表第几页,可以随意更换地址.点击开之后,会发现有一些淘宝MM的简介,并附有超链接链接到个人详情页面. 我们需要抓取本页面的头像地址,MM姓名,MM年龄,MM居住地,

芝麻HTTP:Python爬虫实战之爬取糗事百科段子

首先,糗事百科大家都听说过吧?糗友们发的搞笑的段子一抓一大把,这次我们尝试一下用爬虫把他们抓取下来. 友情提示 糗事百科在前一段时间进行了改版,导致之前的代码没法用了,会导致无法输出和CPU占用过高的情况,是因为正则表达式没有匹配到的缘故. 现在,博主已经对程序进行了重新修改,代码亲测可用,包括截图和说明,之前一直在忙所以没有及时更新,望大家海涵! 更新时间:2015/8/2 糗事百科又又又又改版了,博主已经没心再去一次次匹配它了,如果大家遇到长时间运行不出结果也不报错的情况,请大家参考最新的评

芝麻HTTP:Python爬虫实战之爬取百度贴吧帖子

本篇目标 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3.将抓取到的内容分析并保存到文件 1.URL格式的确定 首先,我们先观察一下百度贴吧的任意一个帖子. 比如:http://tieba.baidu.com/p/3138733512?see_lz=1&pn=1 ? http:// 代表资源传输使用http协议 tieba.baidu.com 是百度的二级域名,指向百度贴吧的服务器. /p/3138733512 是服务器某个资源,即这个帖子的地址定位符 see_lz和pn是

Python爬虫实战(2):爬取京东商品列表

1,引言 在上一篇<Python爬虫实战:爬取Drupal论坛帖子列表>,爬取了一个用Drupal做的论坛,是静态页面,抓取比较容易,即使直接解析html源文件都可以抓取到需要的内容.相反,JavaScript实现的动态网页内容,无法从html源代码抓取需要的内容,必须先执行JavaScript. 我们在<Python爬虫使用Selenium+PhantomJS抓取Ajax和动态HTML内容>一文已经成功检验了动态网页内容的抓取方法,本文将实验程序进行改写,使用开源Python爬虫

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

大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 前言 亲爱的们,教程比较旧了,百度贴吧页面可能改版,可能代码不好使,八成是正则表达式那儿匹配不到了,请更改一下正则,当然最主要的还是帮助大家理解思路. 2016/12/2 本篇目标 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3.将抓取到的内容分析并保存到文件 1.URL格式的确定 首先,我们先观察一下百度贴吧的任意一个帖子. 比如:ht

转 Python爬虫实战二之爬取百度贴吧帖子

静觅 » Python爬虫实战二之爬取百度贴吧帖子 大家好,上次我们实验了爬取了糗事百科的段子,那么这次我们来尝试一下爬取百度贴吧的帖子.与上一篇不同的是,这次我们需要用到文件的相关操作. 本篇目标 1.对百度贴吧的任意帖子进行抓取 2.指定是否只抓取楼主发帖内容 3.将抓取到的内容分析并保存到文件

Python爬虫实战---抓取图书馆借阅信息

原创作品,引用请表明出处:Python爬虫实战---抓取图书馆借阅信息 前段时间在图书馆借了很多书,借得多了就容易忘记每本书的应还日期,老是担心自己会违约,影响日后借书,而自己又懒得总是登录到学校图书馆借阅系统查看,于是就打算写一个爬虫来抓取自己的借阅信息,把每本书的应还日期给爬下来,并写入txt文件,这样每次忘了就可以打开该txt文件查看,每次借阅信息改变了,只要再重新运行一遍该程序,原txt文件就会被新文件覆盖,里面的内容得到更新. 用到的技术: Python版本是 2.7 ,同时用到了ur