• 爬虫学习---糗事百科


    由于我用的3.3.这个是2.7的,所以测试未通过,但是可以作为参照学习的呀

    # -*- 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://m.qiushibaike.com/hot/page/" + page
    user_agent = 'Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)'
    headers = { 'User-Agent' : user_agent }
    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".*?title="(.*?)">(.*?)</div>',unicodePage,re.S)
    items = []
    for item in myItems:
    # item 中第一个是div的标题,也就是时间
    # item 中第二个是div的内容,也就是内容
    items.append([item[0].replace(" ",""),item[1].replace(" ","")])
    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[0] , items[1]
    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
    日期:2014-06-03
    语言:Python 2.7
    操作:输入quit退出阅读糗事百科
    功能:按下回车依次浏览今日的糗百热点
    ---------------------------------------
    """


    print u'请按下回车浏览今日的糗百内容:'
    raw_input(' ')
    myModel = Spider_Model()
    myModel.Start()

  • 相关阅读:
    bzoj2595 / P4294 [WC2008]游览计划
    bzoj4698 / P2463 [SDOI2008]Sandy的卡片
    [bzoj3514]Codechef MARCH14 GERALD07加强版
    [bzoj2440][中山市选2011]完全平方数
    [bzoj2243][SDOI2011]染色
    [bzoj2589]Spoj 10707 Count on a tree II
    [bzoj1452] [JSOI2009]Count
    [bzoj2588][Spoj 10628] Count on a tree
    [bzoj2434][Noi2011]阿狸的打字机
    Codeforces Round #408(div.2)
  • 原文地址:https://www.cnblogs.com/my-time/p/4505229.html
Copyright © 2020-2023  润新知