[Python 爬虫之路1] 爬取糗事百科(requests,bs4)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_28057541/article/details/55057094

需要打开,收藏的网站:
糗事百科
bs4中文文档
requsts中文文档

# 目标:
# 1.嗅事百科 24小时 中的段子
# 2.过滤有图的段子
# 4.每次点击回车则显示一条笑话,Q退出

__author__ = 'XZ'
# -*- coding:utf-8 -*-
# 使得python支持中文

import requests
from bs4 import BeautifulSoup

class QSBK:
    # 初始化一些
    def __init__(self):
        self.page = 1
        self.count = 1
        self.jokes = []
        self.getJokes(self.page)

    # 获取某一页的页面代码
    def getJokes(self,pageIdex):
        url = 'http://www.qiushibaike.com/hot/page/' + str(pageIdex)  # str create a new str object from a given object
        try:
            response = requests.get(url).content
            soup = BeautifulSoup(response, 'html.parser')  # 使用标准库的解析器
            jokes = soup.findAll("div", class_="article block untagged mb15")  # 找到所有的内容
            return jokes
        except requests.HttpError as e:
            print(e)
            return None

    # 从joke中显示各种信息
    def printMsg(self,joke):
        name = joke.find("div", class_='author clearfix').contents[3].text
        cont = joke.find("a", class_='contentHerf').text
        laught = joke.find("i", class_="number").text
        print("用户名:"+name)
        print("内容:"+cont)
        print("点赞数:"+laught)

    # 获取一条信息并显示
    def getAjoke(self):
        size = len(self.jokes)
        if size < self.count: # 如果当前笑话已经是本页最后一个笑话
            self.page+=1 # 更新为下一页
            self.jokes = self.getJokes(self.page) # 获取下一页的笑话
            self.count = 1 # 更新为当前页第一个笑话
        # 显示当前笑话
        self.printMsg(self.jokes[self.count])
        self.count+=1 # 更新到下一个笑话

    # 开始方法
    def start(self):
        print(u"正在读取糗事百科,点击回车显示新段子,Q退出")
        while True:
            i = input()
            if i == 'Q'or i == 'q':
                break
            # 如果不是Q,则打印一条笑话
            self.getAjoke()

q = QSBK()
q.start()

在此次实例中,着重于两个库基本使用的学习,并没有使用正则表达式,下次我会尝试用正则表达式完成

猜你喜欢

转载自blog.csdn.net/qq_28057541/article/details/55057094