基于Python的书籍数据采集与可视化分析系统

温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :)

1. 项目简介

        基于Python的书籍数据采集与可视化分析系统旨在挖掘和分析海量图书数据背后的规律和趋势,为读者、出版商和数据分析师提供更深入的洞察和辅助决策。本系统依托于某瓣庞大的图书数据库,通过收集和分析图书的各项指标,如分类、评分、评论数量等,使用先进的数据可视化技术,直观地展示数据中的信息,帮助用户更好地理解和把握图书市场的动态和趋势。

        通过本系统,用户可以方便地查询和筛选图书数据,观察图书的分类分布、评分分布、热门图书、评论数量等指标,同时还可以对数据进行深入的分析和挖掘,了解读者的阅读喜好、市场趋势和预测未来的发展。本系统的设计和实现旨在为用户提供更加全面、准确、便捷的数据可视化分析服务,帮助用户更好地把握市场动态和趋势,提高决策的准确性和效率。

2. 书籍信息采集

        本系统采用 requests 模拟访问某瓣读书,获取到 html 源代码,利用 beautifulsoup 进行 DOM 解析,提取出关于书籍的关键信息:

def book_spider(book_tag):
    page_num = 0;
    book_list = []
    try_times = 0

    while (1):
        url = 'http://www.xxxxx.com/tag/' + book_tag + '/book?start=' + str(page_num * 15)
        print(url)
        time.sleep(np.random.rand() * 5)

        # Last Version
        req = requests.get(url, headers=hds[page_num % len(hds)])
        source_code = req.text
        plain_text = str(source_code)

        ##Previous Version, IP is easy to be Forbidden
        # source_code = requests.get(url)
        # plain_text = source_code.text

        soup = BeautifulSoup(plain_text)
        list_soup = soup.find('div', {'class': 'mod book-list'})

        try_times += 1;
        if list_soup == None and try_times < 200:
            continue
        elif list_soup == None or len(list_soup) <= 1:
            break  # Break when no informatoin got after 200 times requesting

        for book_info in list_soup.findAll('dd'):
            title = book_info.find('a', {'class': 'title'}).string.strip()
            desc = book_info.find('div', {'class': 'desc'}).string.strip()
            desc_list = desc.split('/')
            book_url = book_info.find('a', {'class': 'title'}).get('href')
            
            # 提取出书籍的作者、出版、评分等关键信息
            # ......
            # ......
          
            all_book_list.append([title, rating, people_num, author_info, pub_info])
            try_times = 0  # set 0 when got valid information
        page_num += 1
        print('Downloading Information From Page %d' % page_num)


def get_people_num(url):
    # url='http://book.xxxx.com/subject/6082808/?from=tag_all' # For Test
    req = requests.get(url, headers=hds[np.random.randint(0, len(hds))])
    source_code = req.text
    plain_text = str(source_code)
    soup = BeautifulSoup(plain_text)
    people_num = soup.find('div', {'class': 'rating_sum'}).findAll('span')[1].string.strip()
    return people_num

        输出日志:

http://www.xxxxx.com/tag/个人管理/book?start=0
['了不起的我', '8.8', '1873', '作者/译者: 陈海贤 ', '出版信息:  台海出版社 / 2019-10-23 / 69.00元']
['非暴力沟通', '8.4', '29312', '作者/译者: [美] 马歇尔·卢森堡 / 阮胤华 ', '出版信息:  华夏出版社 / 2009-1 / 29.00元']
['被讨厌的勇气', '8.6', '16963', '作者/译者: 岸见一郎 / 古贺史健 / 渠海霞 ', '出版信息:  机械工业出版社 / 2015-3-1 / 39.8']
['少有人走的路', '8.4', '78453', '作者/译者: [美] M·斯科特·派克 / 于海生 ', '出版信息:  吉林文史出版社 / 2007-1 / 26.00元']
['影响力', '8.6', '36890', '作者/译者: [美] 罗伯特·西奥迪尼 / 陈叙 ', '出版信息:  中国人民大学出版社 / 2006-5 / 45.00元']
['自控力', '8.2', '42333', '作者/译者: [美]  凯利·麦格尼格尔 / 王岑卉 ', '出版信息:  文化发展出版社(原印刷工业出版社) / 2012-8 / 39.80元']
['如何阅读一本书', '8.4', '59356', '作者/译者: [美] 莫提默·J. 艾德勒 / 查尔斯·范多伦 / 郝明义 / 朱衣 ', '出版信息:  商务印书馆 / 2004-1 / 38.00元']
['原则', '8.4', '18985', '作者/译者: [美] 瑞·达利欧 / 刘波 / 綦相 ', '出版信息:  中信出版社 / 2018-1 / CNY 98.00']
['高效能人士的七个习惯(精华版)', '8.2', '25835', '作者/译者: [美] 史蒂芬·柯维 / 高新勇 / 王亦兵 / 葛雪蕾 ', '出版信息:  中国青年出版社 / 2011-6 / 29.00元']
......

3. 基于Python的书籍数据采集与可视化分析系统

3.1 书籍评分排行榜

基于Python的书籍数据采集与可视化分析系统_第1张图片

3.2 书籍评分分布情况

基于Python的书籍数据采集与可视化分析系统_第2张图片

3.3 各大出版社出版书籍分布情况

基于Python的书籍数据采集与可视化分析系统_第3张图片

3.4 出版社出版图书价格时序变化分析

基于Python的书籍数据采集与可视化分析系统_第4张图片

3.5 完整演示视频

 

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。

技术交流认准下方 CSDN 官方提供的学长 Wechat / QQ 名片 :)

精彩专栏推荐订阅:

1. Python 毕设精品实战案例
2. 自然语言处理 NLP 精品实战案例
3. 计算机视觉 CV 精品实战案例

你可能感兴趣的:(Python,毕设精品实战案例,数据挖掘,数据分析,数据可视化,网络爬虫,python,flask,pycharm)