爬虫实战零点书屋热门小说精选

Posted ZSYL

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了爬虫实战零点书屋热门小说精选相关的知识,希望对你有一定的参考价值。

前言

保存零点书屋热门小说精选中的书名链接excel
在这里插入图片描述

分析html

  • 打开 零点书屋
  • F12进入开发者模式,点击图片的选中区域,之后可以在网页中定位代码位置。
  • 接着分析 HTML 文档内容,确定要抽取标记的位置。热门小说精选的书名及链接都被包含在<li class=”new_2”>标签下的。

在这里插入图片描述

HTML源代码获取

# 爬取零点书屋热门小说
import requests, openpyxl
from bs4 import BeautifulSoup

# 获取页面源代码
def getHtml(url):
    try:
        # 用户代理
        headers = {'User_Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}
        # 获取请求对象
        r = requests.get(url, headers=headers, timeout=3)
        # 判断返回请求状态码是否为200,反之产生一个HttpError异常
        r.raise_for_status()

        # 规范字符编码
        r.encoding = r.apparent_encoding

        # 打印状态码
        print(r.status_code)

        # 返回网页源代码
        return r.text
    except Exception as e:
        print(e.__traceback__)
        return '访问URL失败'

解析网页内容

  • 使用的是findAll() 方法,获取指定标签的内容(所有的小说信息都在<li class_='new_2'> 标签下)
    soup.find_all('li', class_='new_2')
  • 我们所需的内容是在 <li>下的<a>标签中。

在这里插入图片描述

# 解析页面内容,获取需要内容
def getInfo(text):
    dataSet = []
    # 获取解析对象
    soup = BeautifulSoup(text, 'html.parser')
    # 获取所有<li class='new_2'>
    li_tags = soup.find_all('li', class_='new_2')
    for item in li_tags:
        # 获取下面超链接标签
        a = item.find('a')
        # 获取小说名字
        a_name = a.string
        # 获取链接
        a_href = 'https://www.02345.com/'+a['href']
        # print(a_name+'---'+a_href)
        dataSet.append([a_name, a_href])
    # 返回数据
    return dataSet

输出结果

输出结果到excel表格中

# 保存数据
def saveData(dataSet):
    # 获取工作簿
    wb = openpyxl.Workbook()
    # 获取工作表
    ws = wb.active
    # 绘制表头
    ws.append(['小说名称', '链接'])

    # 遍历添加数据
    for data in dataSet:
        ws.append(data)

    # 保存excel
    wb.save('story.xlsx')

完整代码

# 爬取零点书屋热门小说
import requests, openpyxl
from bs4 import BeautifulSoup

# 获取页面源代码
def getHtml(url):
    try:
        # 用户代理
        headers = {'User_Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36'}
        # 获取请求对象
        r = requests.get(url, headers=headers, timeout=3)
        # 判断返回请求状态码是否为200,反之产生一个HttpError异常
        r.raise_for_status()

        # 规范字符编码
        r.encoding = r.apparent_encoding

        # 打印状态码
        print(r.status_code)

        # 返回网页源代码
        return r.text
    except Exception as e:
        print(e.__traceback__)
        return '访问URL失败'


# 解析页面内容,获取需要内容
def getInfo(text):
    dataSet = []
    # 获取解析对象
    soup = BeautifulSoup(text, 'html.parser')
    # 获取所有<li class='new_2'>
    li_tags = soup.find_all('li', class_='new_2')
    for item in li_tags:
        # 获取下面超链接标签
        a = item.find('a')
        # 获取小说名字
        a_name = a.string
        # 获取链接
        a_href = 'https://www.02345.com/'+a['href']
        # print(a_name+'---'+a_href)
        dataSet.append([a_name, a_href])
    # 返回数据
    return dataSet


# 保存数据
def saveData(dataSet):
    # 获取工作簿
    wb = openpyxl.Workbook()
    # 获取工作表
    ws = wb.active
    # 绘制表头
    ws.append(['小说名称', '链接'])

    # 遍历添加数据
    for data in dataSet:
        ws.append(data)

    # 保存excel
    wb.save('story.xlsx')


if __name__ == '__main__':
    url = 'https://www.02345.com/'
    text = getHtml(url)
    print(text)
    dataSet = getInfo(text)
    saveData(dataSet)

结果展示

在这里插入图片描述

感谢努力,一起加油!

以上是关于爬虫实战零点书屋热门小说精选的主要内容,如果未能解决你的问题,请参考以下文章

Python实战项目网络爬虫 之 爬取小说吧小说正文

python爬虫实战—喜欢下载什么小说,由自己说了算,超详细小说下载爬虫教程

爬虫实战:爬笔趣阁小说

2017.08.17 Python爬虫实战之BS4获取起点小说信息

python网络爬虫实战-Scrapy,深入理解scrapy框架,解决数据抓取过程

Python爬虫实战教程:爬取网易新闻;爬虫精选 高手技巧