爬虫练习一

原创 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()

持续更新-爬虫网上练习记录

到目前为止,学习了爬虫的相关知识点如下: 1、学习第三方包和模块的使用,包括:requests、re、urllib.request、bs4.BeautifulSoup、lxml.etree、os等;...
  • qq_34100655
  • qq_34100655
  • 2017年12月16日 21:40
  • 106

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

Go官网指南练习原文 在这个练习中,将会使用 Go 的并发特性来并行执行 web 爬虫。 修改 Crawl 函数来并行的抓取 URLs,并且保证不重复。 提示:你可以用一个 m...
  • qq_27818541
  • qq_27818541
  • 2017年02月14日 15:39
  • 1822

Python练习-先从网上爬几个笑话

序Python爬虫,可以简单理解为用python去访问一个网站,获得该网站的内容。 网页的本质就是文本,我们能在本地通过 file = open('file.txt', 'r') 打开一个文本文件,...
  • NitefullWind
  • NitefullWind
  • 2016年10月14日 00:44
  • 1547

[项目实训]Python爬虫基本库回顾及实例练习

Requests库 requests.request()           构造一个请求,支撑以下各方法的基础方法 requests.get()         ...
  • ssq352906788
  • ssq352906788
  • 2017年05月07日 19:10
  • 229

Python爬虫练习

今日爬虫练习,爬取的内容是我校的就业中心网中的内容。是一个基础的爬虫,很适合初学者学习。 使用的是requests和BeautifulSoup。 过程中遇到的问题是乱码问题和url不规则问题: 看这...
  • zy_dream
  • zy_dream
  • 2016年12月06日 21:55
  • 200

爬虫训练营-基础之模拟请求

此文已在本人个人微信公众号(iwoods100,不会下厨的健身爱好者不是一个好程序员)首发,关注可查阅全部文章。 在开发爬虫程序前,你应该知道你需要的数据来自哪儿,以及怎么获取。 为了更...
  • u010335393
  • u010335393
  • 2016年03月13日 10:37
  • 984

爬虫练习

#!usr/bin/env python3 # -*- coding:utf-8 -*- import requests from PIL import Image import re from i...
  • sofeien
  • sofeien
  • 2016年03月21日 23:00
  • 367

python多线程小爬虫之练练手

序: 叮咚叮咚,走过路过不要错过啊。。。 好久没写博客,上次都是几年前了,写过一些android的文章,然而我连账号都忘记了,真尼玛。。。 大数据时代,人工智能,机器学习开始流行了,赶上了这个时...
  • shellc1992
  • shellc1992
  • 2017年04月30日 19:13
  • 336

go练习:Web 爬虫

代码: Sa package main import ( "fmt" ) type Fetcher interface { // Fetch 返回 URL 的 body 内容,并且将在这个...
  • icyday
  • icyday
  • 2014年11月05日 17:15
  • 1052

python网页爬虫练习

爬一个网页的文章名称 import requests import re #html = requests.get('http://http://jp.tingroom.com/yuedu/') #p...
  • zuoyefeng1990
  • zuoyefeng1990
  • 2016年02月26日 11:11
  • 170
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:爬虫练习一
举报原因:
原因补充:

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