首页 > 其他分享 >大数据分析与可视化 之 小说爬虫类

大数据分析与可视化 之 小说爬虫类

时间:2023-12-30 20:33:08浏览次数:26  
标签:数据分析 __ href text self url html 可视化 爬虫类

大数据分析与可视化 之 小说爬虫类

import random
import requests
from lxml import  etree
import time


class WebScraper:
    def __init__(self, url,output_file):
        self.url = url
        self.output_file = output_file

        self.headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.90 Safari/537.36'
        }

    def request_html(self, url):
        response = requests.get(url, headers=self.headers)
        response.encoding = 'utf-8'
        return response.text

    def parse_html(self, html, f):
        tree = etree.HTML(html)
        #获取标题
        list_name = tree.xpath('//div[@class="book-mulu"]/ul/li/a')
        #获取链接名
        list_name_href = tree.xpath('//div[@class="book-mulu"]/ul/li/a/@href')

        # 使用zip函数将标题元素和链接名一一对应
        for item,href in zip(list_name,list_name_href):
            # 构建完整的链接
            href = 'https://www.shicimingju.com' + href
            title = item.text
            print('正在下载:-**--%s--**-......' % title)
            # 调用get_text函数获取链接内容
            text = self.get_text(href)
            f.write(title + '\n' + text)
            print('结束下载:-**--%s--**-' % title)
            # 随机等待一段时间
            time.sleep(random.uniform(0, 1))

    def get_text(self, href):
        content = self.request_html(href)
        tree = etree.HTML(content)
        artist = tree.xpath('//div[@class="chapter_content"]')
        #使用循环和字符串操作将章节内容合并为一个文本字符串
        #在循环中,每次迭代都会得到一个章节内容的文本字符串,然后使用''.join(...)将这些字符串连接起来,形成一个大的文本字符串。
        text = ''.join(etree.tostring(item, encoding='utf-8', method='text').decode('utf-8')
                       for item in artist)
        #返回字符串
        return text
    def run(self):
        with open(self.output_file, 'w', encoding='utf-8') as f:
            html = self.request_html(self.url)
            self.parse_html(html, f)


if __name__ == '__main__':
    scraper = WebScraper('http://www.shicimingju.com/book/liangjinyanyi.html','两晋演义.txt')
    scraper.run()

标签:数据分析,__,href,text,self,url,html,可视化,爬虫类
From: https://www.cnblogs.com/IvanKK/p/17936772

相关文章

  • 大数据分析与可视化 之 实验10 Pandas实现数据分析
    实验10Pandas实现数据分析实验学时:2学时实验类型:验证实验要求:必修一、实验目的掌握Pandas的字符串函数。掌握Pandas统计汇总函数。掌握Pandas排序、分组、合并与级联函数。能利用上述函数进行综合数据分析。二、实验要求通过编程实现使用Pandas字符串函数进行文本......
  • 大数据分析与可视化 之 实验11 Matplotlib绘制图表(一)
    实验11Matplotlib绘制图表(一)实验学时:2学时实验类型:验证实验要求:必修一、实验目的掌握Matplotlib的框架及图形属性。掌握Matplotlib绘制图形的步骤。掌握Matplotlib绘制直线、曲线图、折线图。掌握Matplotlib绘制柱形图、条形图、饼图。二、实验要求通过编程实现使用......
  • 大数据分析与可视化 之 实验12 Matplotlib绘制图表(二)
    实验12Matplotlib绘制图表(二)实验学时:2学时实验类型:验证实验要求:必修一、实验目的掌握Matplotlib的框架及图形属性。掌握Matplotlib绘制图形的步骤。掌握Matplotlib绘制柱形图、条形图、饼图、折线图。掌握Matplotlib绘制散点图、等高线图、极坐标图、3D图。二、实验......
  • 大数据分析与可视化 之 实验06 Pandas缺失值处理
    实验06Pandas缺失值处理实验学时:2学时实验类型:验证实验要求:必修一、实验目的掌握判断缺失值、过滤缺失值、填充缺失缺失值等缺失值处理解决实际数据中的缺失值问题二、实验要求使用常见的缺失值处理函数(如:isnull()、notnull()、fillna()、dropna()函数)等知识在PyCharm......
  • 大数据分析与可视化 之 实验07 Pandas合并与级联
    实验07Pandas合并与级联实验学时:2学时实验类型:验证实验要求:必修一、实验目的掌握pandas合并/拼接掌握pandas级联二、实验要求利用pandas合并、拼接和级联等知识在PyCharm中编写程序,实现Python数据处理的相关操作。三、实验内容任务1.现有如下图的两个DataFrame数据......
  • 大数据分析与可视化 之 实验08 Pandas字符串和文本处理
    实验08Pandas字符串和文本处理实验学时:2学时实验类型:验证实验要求:必修一、实验目的学会正确使用常见的字符串函数如:len()、find()、strip()、replace()、contains()函数。解决实际数据中的字符串和文本处理问题。二、实验要求使用常见的字符串函数(如:len()、find()、s......
  • 大数据分析与可视化 之 实验09 Pandas函数应用
    实验09Pandas函数应用实验学时:2学时实验类型:验证实验要求:必修一、实验目的掌握pandas函数应用的方法:pipe()、apply()和applymap()。能编写自定义函数。能使用pandas函数应用调用自定义函数解决数据分析实际问题。二、实验要求利用pandas函数应用的方法解决数据分析实......
  • 大数据分析与可视化 之 实验02 Numpy创建数组
    实验02Numpy创建数组实验学时:2学时实验类型:验证实验要求:必修一、实验目的掌握Numpy创建数组的方法掌握Numpyndarray的属性、运算掌握Numpy迭代数值,修改数组中元素的值掌握Numpy常用函数的使用方法二、实验要求使用Numpy.array的构造函数创建数组,学会使用Numpyndar......
  • 大数据分析与可视化 之 实验03 Numpy实现数据分析
    实验03Numpy实现数据分析实验学时:2学时实验类型:验证实验要求:必修一、实验目的掌握Numpy的字符串函数掌握Numpy统计函数掌握Numpy排序、分组、线性代数函数二、实验要求通过编程实现使用Numpy字符串函数进行文本处理,使用统计函数进行数据分析等常用操作。三、实验内......
  • 大数据分析与可视化 之 实验04 Pandas基础
    实验04Pandas基础实验学时:2学时实验类型:验证实验要求:必修一、实验目的1.掌握pandas系列、数据帧和面板的使用2.掌握pandas基本功能和操作二、实验要求Pandas程序的运行步骤。2.pandas的数据结构3.pandas系列、数据帧和面板pandas基本功能和操作三、实验内容任务1.......