爬虫实战03--python爬虫爬取糗事百科标题,正常版--面向对象版本(1/3)(面向对象,多线程面向对象,多进程面向对象)(1)

0.0说明:

这一个爬取的网站是糗事百科的页面去全部标题!最后是以打印的方式展现的!
这是第一篇文章,就是正常的爬取。一共是有三个版本,我一共会发三篇文章!

第一篇:本篇,正常爬取 糗事百科全部标题
第二篇:下篇,多线程的爬取糗事百科全部标题
第三篇:后篇,多进程的爬取糗事百科全部标题

01、运行环境+

# 操作系统:win10 专业版
pycharm professional 2019.1
python 3.8
lxml == 4.5.1
requests == 2.23.0
xpath == 2.0.2

02、开始爬虫

02-1、目标

糗事百科的页面全部标题!最后以打印的方式展现!
地址:

# 页面一共是1-13页
https://www.qiushibaike.com/8hr/page/1/
......
https://www.qiushibaike.com/8hr/page/13/

02-2、开始抓取内容

02-2-1、分析

在这里插入图片描述
图片中的数据就是我们需要获取的。用xpath这一个获取到了全部我们需要的!
对于url地址就是1----13这一个简单处理,其他都是简单的爬虫流程,不再赘述!具体看代码的注释吧!
再看一哈思路!

“”"
思路:
1.构建url地址
2.发送请求获取数据
3.从响应中提取数据
4.保存数据
“”"

我们直接写代码了!

03、完整代码(面向对象版)

import requests
from lxml import etree

"""
思路:
1.构建url地址
2.发送请求获取数据
3.从响应中提取数据
4.保存数据
"""


class Qiushi():
	 """糗事百科单线程爬虫"""
    def __init__(self):
        # 初始化信息
        # 构建请求头
        self.headers = {
            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.125 Safari/537.36"
        }
         # 构建基础的url地址
        self.baseutl= 'https://www.qiushibaike.com/8hr/page/{}/'


    # 构建url地址
    def get_utls(self):
    	"""
        :return: 目标url列表
        """
        # 一共13页
        url_list = [self.baseutl.format(urlpage) for urlpage in range(1,14)]
        return url_list

    # 发送请求,获得响应数据
    def get_html(self,url):
    	"""
        :param url: 目标url地址
        :return: 响应html数据
        """
        response = requests.get(url=url,headers=self.headers)
        return response.content.decode()

    # 从响应中获取数据
    def get_content(self,response):
    	"""
        :param html: html数据
        :return: 标题列表
        """
        # 1.创建etree对象
        html = etree.HTML(response)
        # 2.使用xpath规则提取数据
        res_list = html.xpath("//li//a[@class='recmd-content']/text()")
        return res_list
	
	# 保存数据
    def save(self,restitle):
        for item in restitle:
            print(item)
        # print(restitle)


    # 执行程序
    def run(self):
    	# 1.获取url地址
        url_list = self.get_utls()
        for url in url_list:
        	# 2.发送请求
            response = self.get_html(url)
			# 3.提取响应中的内容
            restitle = self.get_content(response)
            # 4.保存数据
            self.save(restitle)
            # print(restitle)


if __name__ == '__main__':
	# 创建对象
    obj1 = Qiushi()
    # 执行run()方法
    obj1.run()



最后获取的信息是以打印的方式展现的!

04、结语:

个人记录,新手入门,多多学习,欢迎大家交流探讨!
个人网站: http://106.54.78.238/
song_of _sea的个人网站 http://106.54.78.238/

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值