首页 > 编程语言 >【python爬虫案例】利用python爬取豆瓣读书评分TOP250排行数据

【python爬虫案例】利用python爬取豆瓣读书评分TOP250排行数据

时间:2024-09-20 17:12:34浏览次数:9  
标签:python 爬虫 爬取 df 豆瓣 infos csv TOP250

一、爬取案例-豆瓣读书TOP250

上一期给大家分享了个python爬虫案例:豆瓣电影TOP250的排行榜数据爬取

【python爬虫案例】利用python爬虫爬取豆瓣电影评分TOP250排行数据!

今天再给大家分享一下:豆瓣读书排行榜TOP250的python爬虫案例!

因为是同一个网站,所以流程和逻辑上都是差不多的。

这次爬取的目标网址是:https://book.douban.com/top250

老规矩!咱们以目标为驱动,以兴趣为导向,先来看下爬虫程序运行后得到的excel文档数据

那代码是如何实现豆瓣读书TOP250数据爬取的了?下面逐一讲解一下python实现。

二、豆瓣读书TOP250网站分析

通过浏览器F12查看所有请求,发现他并没有发送ajax请求,那说明我们要的TOP250的排行榜数据大概率是在html页面内容上。

于是我们 点击右键->查看网页源代码 ,发现我们需要的豆瓣读书评分的排行榜数据都在html页面里

这就简单了,我们直接往下看,上代码。

三、python爬虫代码详解

首先,导入我们需要用到的库

import requests     # 发请求
from lxml import etree  # 解析html
import pandas as pd  # 存取csv

然后,向豆瓣读书TOP250的网页发起请求,获得html页面内容

page_source = requests.get(page_url, headers=headers).text

用lxml库解析html页面

tree = etree.HTML(page_source)

使用xpath来提取我们需要的书籍排行榜数据内容

# 获得数据
tables = tree.xpath('//div[@id="content"]/div/div[1]/div/table')

for table in tables:
    top = table.xpath(".//td[@valign='top']")[-1]

    # 书名
    book_name = extract_first(top.xpath("./div/a/text()")).strip()
    # 豆瓣链接
    url = extract_first(top.xpath("./div/a/@href")).strip()
    # 作者、译者、出版社、出版日期、价格
    info = extract_first(top.xpath("./p[@class='pl']/text()")).strip()
    # 评分
    score = extract_first(top.xpath("./div[@class='star clearfix']/span[@class='rating_nums']/text()")).strip()
    # 评分人数
    star_people = extract_first(top.xpath("./div[@class='star clearfix']/span[@class='pl']/text()")).strip()
    star_people_num = re.search("\d+", star_people).group()
    # 一句话评价
    one_evaluate = extract_first(top.xpath("./p[@class='quote']/span/text()")).strip()

其中,需要特殊说明的是,上面的info变量。

他里面会包含:作者、译者、出版社、出版日期、价格等信息,提取的时候会有多种格式。

为了应对书籍信息中列表的不同长度,所以会有如下应对不同格式的处理代码

infos = info.split("/")
if len(infos) == 5:
    author = infos[0]
    translator = infos[1]
    publish = infos[2]
    publish_date = infos[3]
    price = infos[4]
elif len(infos) == 4:
    author = infos[0]
    publish = infos[1]
    publish_date = infos[2]
    price = infos[3]
elif len(infos) == 6 :  # 有2个价格 第1页:福尔摩斯探案全集
    author = infos[0]
    translator = infos[1]
    publish = infos[2]
    publish_date = infos[3]
    price = str(infos[4]) + "/" + str(infos[5])
elif len(infos) == 3:    # 没有作者,且没有译者 第5页:十万个为什么
    publish = infos[0]
    publish_date = infos[1]
    price = infos[2]
else:
    print(f"未匹配到的格式 书名={book_name}", infos)

最后,我们将爬虫爬取的数据保存到csv文档里

def save_to_csv(csv_name):
    """
    数据保存到csv
    @param csv_name: csv文件名字
    @return:
    """
    df = pd.DataFrame()  # 初始化一个DataFrame对象
    df['书名'] = book_names
    df['豆瓣链接'] = book_urls
    df['作者'] = authors
    df['译者'] = translators
    df['出版社'] = publishers
    df['出版日期'] = publish_dates
    df['价格'] = prices
    df['评分'] = scores
    df['评分人数'] = star_peoples
    df['一句话评价'] = one_evaluates
    df.to_csv(csv_name, encoding='utf8')  # 将数据保存到csv文件

上面的book_names、book_urls等变量都是使用的list来进行存储的,这样才能符合pandas导出数据时的需要,最后调用to_csv()方法即可导出豆瓣读书的排行榜数据到文档里了。

三、python爬虫源代码获取

我是 @王哪跑,持续分享python干货,各类副业软件!
附完整python源码及数据:【python爬虫案例】利用python爬虫爬取豆瓣读书评分TOP250排行数据

标签:python,爬虫,爬取,df,豆瓣,infos,csv,TOP250
From: https://www.cnblogs.com/wangnp/p/18412477

相关文章

  • python怎么打开编辑器
    1、在电脑开始菜单中点击所有程序,找到Python程序,点击其中idle。2、然后点击左上角的“File”,打开菜单,在下拉菜单中选择“NewFile”选项,就可打开python编辑器了。3、在打开的python编辑器中就可以输入自己想写的代码了。......
  • python怎么创建数据库
    python怎么创建数据库?具体方法如下:import pymysql#数据库基本信息config = {          'host':'localhost',          'port':3306,          'user':'root',          'passwd':'root',          'db�......
  • 华为OD机试真题- 关联子串 python-2024年OD统一考试(E卷)
     最新华为OD机试考点合集:华为OD机试2024年真题题库(E卷+D卷+C卷)_华为od机试题库-CSDN博客     每一题都含有详细的解题思路和代码注释,精编c++、JAVA、Python三种语言解法。帮助每一位考生轻松、高效刷题。订阅后永久可看,持续跟新。题目描述:给定两个字符串str1和str2,如......
  • 基于Python+Vue开发的鲜牛奶订购管理系统
    项目简介该项目是基于Python+Vue开发的鲜牛奶订购管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的牛奶订购管理系统项目,大学生可以在实践中学习和提升自己......
  • 基于Python+Vue开发的反诈视频宣传管理系统
    项目简介该项目是基于Python+Vue开发的反诈视频宣传管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的反诈宣传管理系统项目,大学生可以在实践中学习和提升自......
  • 基于Python+Vue开发的美容预约管理系统
    项目简介该项目是基于Python+Vue开发的美容预约管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的美容诊所预约管理系统项目,大学生可以在实践中学习和提升自......
  • 基于Python+Vue开发的新闻管理系统
    项目简介该项目是基于Python+Vue开发的新闻管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的新闻管理系统项目,大学生可以在实践中学习和提升自己的能力,为以......
  • 基于Python+Vue开发的摄影网上预约管理系统
    项目简介该项目是基于Python+Vue开发的摄影网上预约管理系统(前后端分离),影楼婚纱摄影,这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的在线摄影预约管理系统项目,大学生可以在实......
  • 基于Python+Vue开发的民宿客房预订管理系统
    项目简介该项目是基于Python+Vue开发的民宿客房预订管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Python编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Python的民宿客房预订管理系统项目,大学生可以在实践中学习和提......
  • 计算机毕业设计推荐-基于python+Django的酒店预约预定平台【源码+文档+讲解】
    精彩专栏推荐订阅:在下方专栏......