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

0.0说明:

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

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

0一、运行环境+

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

0二、开始爬虫

02-一、目标

糗事百科的页面所有标题!最后以打印的方式展示!
地址:web

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

02-二、开始抓取内容

02-2-一、分析

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

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

咱们直接写代码了!学习

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

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

最后获取的信息是以打印的方式展示的!网站

0四、结语:

我的记录,新手入门,多多学习,欢迎你们交流探讨!
我的网站: http://106.54.78.238/
song_of _sea的我的网站 http://106.54.78.238/ui