爬虫练习一

原创 2015年11月17日 22:37:00
# -*- coding:utf-8 -*-
import urllib2,urllib,re,string,thread

class qqZone:
    def __init__(self,myurl):
        self.url=myurl
        self.infos=[]   #通过正则,有选择的产生的数据
        self.title=''
        self.page=''    #由该url产生的所有数据
        
    def getMain(self):
        self.page=self.getPage(self.url)
        self.getNeed(self.page)
        myCount=self.getPageCount(self.page)
        print u"myTitle is:"+self.title
        print u"myInfos is:"+self.infos
        #2、输出int型格式与str不同,否则会报错。
        print "count is %d" % myCount
        
    def saveInfo(self):
        filename=self.title+'.txt'
        file=open(filename,'w+')
        file.write(self.infos)
        #allinfos=self.getAllInfos(self.page)
        #file.write(allinfos)
        file.close()
    
    #1、加了headers以后,就可以获取到Title了。。。。YES!!!!!!!!!!!!!
    #   qq空间中的东西爬不到啊。。。
    #3、infos=res.read().decode('utf-8'):从而解决了乱码问题。。。。(好久才发现!!!)
    def getPage(self,myurl):
        user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
        headers ={'User-Agent' : user_agent}
        req=urllib2.Request(myurl,headers=headers)
        res=urllib2.urlopen(req)
        infos=res.read().decode('utf-8')
        return infos

    #获取空间标题
    #<h1 class="head-title" id="top_head_title"><span class="title-text">无限之声</span>
    #<h1.*?class="head-title".*?id="top_head_title"><span.*?class="title-text">(.*?)</span>
    #<a href="http://blog.csdn.net/pleasecallmewhy">汪海的实验室</a>
    # <span class="link_title"><a href="/pleasecallmewhy/article/details/24419023">
        #[NodeJS]使用Node.js写一个简单的在线聊天室            
       # </a></span>
    def getNeed(self,infos):
        #strMatch1=re.search(r'<title>(.*?)</title>',infos,re.S)
        #strMatch1=re.search(r'<span class="title-text">(.*?)</span>',infos,re.S)
        titleMatch=re.search(r'<a.*?>(.*?)</a>',infos,re.S)
        infosMatch=re.search(r'<span class="link_title"><a.*?>(.*?)</a></span>',infos,re.S)
        
        if titleMatch:
            self.title=titleMatch.group(1)
        else:
            self.title=u"暂无标题"
        self.title = self.title.replace('\\','').replace('/','').replace(':','').replace('*','').replace('?','').replace('"','').replace('>','').replace('<','').replace('|','')  
        
        if infosMatch:
            self.infos=infosMatch.group(1)
        else:
            self.infos=u"暂无内容"
            
    def getAllInfos(self,infos):
        myItems=re.findall(r'<span class="link_title"><a.*?>(.*?)</a></span>',infos,re.S)
        items=[]
        for item in myItems:
            items.append(item[0].replace("\n",""))
        return items
        
    #获取总共的页数(后来不知道为啥获取不到了)
    #<span> 301条数据   共7页</span>
    def getPageCount(self,infos):
        countMatch=re.search(r'<span>.*?共(\d+?)页</span>',infos,re.S)    
        if countMatch:
            myCount=int(countMatch.group(1))
        else:
            myCount=0
        return myCount    

print u"请输入地址:"
myurl=str(raw_input(' '))
zone=qqZone(myurl)
zone.getMain()
zone.saveInfo()

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

scrapy 爬虫练习

python爬虫练习3

说明获取豆瓣电影推荐页电影详情,参考网址https://movie.douban.com/explore#!type=movie&tag=%E7%83%AD%E9%97%A8&sort=recomme...

Python爬虫练习-查询lol隐藏分

玩英雄联盟游戏的小伙伴都知道游戏账号会有隐藏分,而英雄联盟也提供隐藏分查询系统,这里我们利用python爬虫来查询lol隐藏分。       首先我们点击到查询系统看一下,它的页面是这样子 然...

【极客学院】-python学习笔记-4-单线程爬虫 (提交表单抓取信息,实战练习)

极客学院课程地址:http://www.jikexueyuan.com/course/821_3.html?ss=1 向网页提交数据: get,post 交互方式 分析目标网站 表单提交功能 ...

学习一下golang 练习70 web crawler (网络爬虫)

之前找了有下web crawler的练习答案. 貌似中文的不多。另外golang.org自从在外面之后,帐前卒每次上都需要到那里都要花些功夫。国内的也有一个移植的(猛击这里)。最近支付宝的页面也被爬虫...
  • cctt_1
  • cctt_1
  • 2013-03-29 22:01
  • 5502

SpringBoot+SpringMVC+MybatisPlus框架整合练习之【美女图片】爬虫---图文详细流程

最近浏览很多博客,学习了不少新的知识,收获颇多,就想着能不能将新学的知识整合一下来练练手,提高自己撸代码搭框架的能力,还有就是给大家一个新年福利,爬一爬美女图片网站。上车请刷卡,哈哈。顺便就拿这爬来的...

模拟登陆CSDN -- Python爬虫练习之正则表达式和cookie

这周学习的主题是正则表达式和cookie,这部分也挺不错的,也并没有想象中容易,学习下来还是挺多收获的。这周练习的综合习题是模拟登陆CSDN,实现过程不难,最终实现代码在最后面。

【python小练习】百度图片小爬虫

第一篇博客翻译了一个21行的单词纠错器,这次就给大家贡献一个21行的百度图片爬虫。(我仿佛很喜欢21这个数字嘛。。。)因为博主最近在做一个pix2pix的项目,需要很多图片作为原始训练集,因此想到了自...

Go指南练习之《Web 爬虫》(Web Crawler)

Go官网指南练习原文 在这个练习中,将会使用 Go 的并发特性来并行执行 web 爬虫。 修改 Crawl 函数来并行的抓取 URLs,并且保证不重复。 提示:你可以用一个 m...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)