2015-05-12 python爬虫学习

开始学习python,在网上找了一个扒糗事百科精华的爬虫,自己稍许的修改了一下,就可以正常的扒拉糗百精华,别人的代码不敢独占,就贴出来分享给大家,废话没有上代码:

# -*- coding: utf-8 -*-  
   
import urllib2  
import urllib  
import re  
import thread  
import time  

  
#----------- 加载处理糗事百科 -----------  
class Spider_Model:  
      
    def __init__(self):  
        self.page = 1  
        self.pages = []  
        self.enable = False  
  
    # 将所有的段子都扣出来,添加到列表中并且返回列表  
    def GetPage(self,page):  
        myUrl = "http://www.qiushibaike.com/hot/page/" + page
        myUrl = myUrl + "?s=4771468"
        user_agent = ‘Mozilla/5.0 (Windows NT 6.1; rv:37.0) Gecko/20100101 Firefox/37.0‘ 
        headers = { ‘User-Agent‘ : user_agent }
        #print myUrl
        req = urllib2.Request(myUrl, headers = headers)
        myResponse = urllib2.urlopen(req)
        myPage = myResponse.read()  
        #encode的作用是将unicode编码转换成其他编码的字符串  
        #decode的作用是将其他编码的字符串转换成unicode编码  
        unicodePage = myPage.decode("utf-8")
  
        # 找出所有class="content"的div标记  
        #re.S是任意匹配模式,也就是.可以匹配换行符  
        myItems = re.findall(‘<div.*?class="content">(.*?)</div>‘,unicodePage,re.S)
        
        items = []  
        for item in myItems:  
            # item 中是div的内容,也就是糗事百科精华的内容
            # item 中去掉换行
            items.append(item.replace("\n","").replace("<br/>",""))  
        return items  
  
    # 用于加载新的段子  
    def LoadPage(self):  
        # 如果用户未输入quit则一直运行  
        while self.enable:  
            # 如果pages数组中的内容小于2个  
            if len(self.pages) < 2:  
                try:  
                    # 获取新的页面中的段子们  
                    myPage = self.GetPage(str(self.page))  
                    self.page += 1  
                    self.pages.append(myPage)  
                except:  
                    print ‘无法链接糗事百科!‘  
            else:  
                time.sleep(1)  
          
    def ShowPage(self,nowPage,page):  
        for items in nowPage:  
            print u‘第%d页‘ % page , items 
            myInput = raw_input()  
            if myInput == "quit":  
                self.enable = False  
                break  
          
    def Start(self):  
        self.enable = True  
        page = self.page  
  
        print u‘正在加载中请稍候......‘  
          
        # 新建一个线程在后台加载段子并存储  
        thread.start_new_thread(self.LoadPage,())  
          
        #----------- 加载处理糗事百科 -----------  
        while self.enable:  
            # 如果self的page数组中存有元素  
            if self.pages:  
                nowPage = self.pages[0]  
                del self.pages[0]  
                self.ShowPage(nowPage,page)  
                page += 1  
  
  
#----------- 程序的入口处 -----------  
print u""" 
--------------------------------------- 
   程序:糗百爬虫 
   版本:0.3 
   原作者:why
   修改者:天问-中国
   日期:2015-05-12 
   语言:Python 2.7 
   操作:输入quit退出阅读糗事百科 
   功能:按下回车依次浏览今日的糗百热点 
--------------------------------------- 
"""
  
  
print u‘请按下回车浏览今日的糗百内容:‘  
raw_input(‘ ‘)  
myModel = Spider_Model()  
myModel.Start()

原代码作者的注释很清楚了,我就不在啰嗦了。效果图是这样的。

时间: 2024-12-15 06:52:39

2015-05-12 python爬虫学习的相关文章

Python爬虫学习路线,强烈建议收藏这十一条

(一)如何学习Python 学习Python大致可以分为以下几个阶段: 1.刚上手的时候肯定是先过一遍Python最基本的知识,比如说:变量.数据结构.语法等,基础过的很快,基本上1~2周时间就能过完了,我当时是在这儿看的基础:Python 简介 | 菜鸟教程 2.看完基础后,就是做一些小项目巩固基础,比方说:做一个终端计算器,如果实在找不到什么练手项目,可以在 Codecademy - learn to code, interactively, for free 上面进行练习. 如果时间充裕的

Python爬虫学习系列教程

Python爬虫学习系列教程 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫感兴趣的童鞋有帮助,如果有机会期待与大家的交流. Python版本:2.7 一.爬虫入门 1. Python爬虫入门一之综述 2. Python爬虫入门二之爬虫基础了解 3. Python爬虫入门三之Urllib库的基本使用 4. Python爬虫入门四之Urllib库

Python爬虫学习:四、headers和data的获取

之前在学习爬虫时,偶尔会遇到一些问题是有些网站需要登录后才能爬取内容,有的网站会识别是否是由浏览器发出的请求. 一.headers的获取 就以博客园的首页为例:http://www.cnblogs.com/ 打开网页,按下F12键,如下图所示: 点击下方标签中的Network,如下: 之后再点击下图所示位置: 找到红色下划线位置所示的标签并点击,在右边的显示内容中可以查看到所需要的headers信息. 一般只需要添加User-Agent这一信息就足够了,headers同样也是字典类型: user

Python爬虫学习:三、爬虫的基本操作流程

本文是博主原创随笔,转载时请注明出处Maple2cat|Python爬虫学习:三.爬虫的基本操作与流程 一般我们使用Python爬虫都是希望实现一套完整的功能,如下: 1.爬虫目标数据.信息: 2.将数据或信息存入数据库中: 3.数据展示,即在Web端进行显示,并有自己的分析说明. 这次我先介绍第一个功能中所需要实现的基本操作: 爬虫的基本操作:      表示必须步骤           表示可选步骤 导入爬虫所需要的库(如:urllib.urllib2.BeautifulSoup.Scrap

2018/7/21 Python 爬虫学习

2018/7/21,这几天整理出来的一些Python 爬虫学习代码. import urllib2 response = urllib2.urlopen("http://baidu.com") html = response.read() print html 进一步,可以request import urllib2 req = urllib2.Request("http://www.baidu.com") response = urllib2.urlopen(re

开始我的Python爬虫学习之路

因为工作需要经常收集一些数据,我就想通过学爬虫来实现自动化完成比较重复的任务. 目前我Python的状况,跟着敲了几个教程,也算是懂点基础,具体比较深入的知识,是打算从做项目中慢慢去了解学习. 我是觉得如果一开始就钻细节的话,是很容易受到打击而放弃的,做点小项目让自己获得点成就感路才更容易更有信心走下去. 反正遇到不懂的就多查多问就对了. 知乎上看了很多关于入门Python爬虫的问答,给自己总结出了大概的学习方向. 基础: HTML&CSS,JOSN,HTTP协议(这些要了解,不太需要精通) R

Python实战:Python爬虫学习教程,获取电影排行榜

Python应用现在如火如荼,应用范围很广.因其效率高开发迅速的优势,快速进入编程语言排行榜前几名.本系列文章致力于可以全面系统的介绍Python语言开发知识和相关知识总结.希望大家能够快速入门并学习Python这门语言. 本文是在前一部分Python基础之上程序员带你十天快速入门Python,玩转电脑软件开发(四),再次进行的Python爬虫实战课程. 正则表达式实例简单详解 正则表达式干什么用? 就是在字符串中提取我们需要的内容的. 记得哦,要先引用正则表达式模块的哦. re就是正则表达式相

《Python爬虫学习系列教程》学习笔记

转自:http://cuiqingcai.com/1052.html 大家好哈,我呢最近在学习Python爬虫,感觉非常有意思,真的让生活可以方便很多.学习过程中我把一些学习的笔记总结下来,还记录了一些自己实际写的一些小爬虫,在这里跟大家一同分享,希望对Python爬虫感兴趣的童鞋有帮助,如果有机会期待与大家的交流. 一.Python入门 1. Python爬虫入门一之综述 2. Python爬虫入门二之爬虫基础了解 3. Python爬虫入门三之Urllib库的基本使用 4. Python爬虫

Python爬虫学习一之Requests包使用方法

Requests函数库是学习Python爬虫必备之一, 能够帮助我们方便地爬取. 本文主要参考了其官方文档. Requests安装: requests目前的版本是v2.11.1, 在WINDOWS上可以通过命令行窗口(运行cmd命令), 利用pip进行自动地安装(很方便): > pip install requestsCollecting requests Downloading requests-2.11.1-py2.py3-none-any.whl <514kB>Installing

Python爬虫学习(1)

接触python不久,也在慕课网学习了一些python相关基础,对于爬虫初步认为是依靠一系列正则获取目标内容数据 于是参照着慕课网上的教学视频,完成了我的第一个python爬虫,鸡冻 >_< # !/usr/bin/env python # -*- coding: UTF-8 -*- # addUser: Gao # addTime: 2018-01-27 23:06 # description: python爬虫练习 import urllib2, re, os # 获取目标网址 Targe