首页 > Python资料 博客日记
【python爬虫案例】利用python爬取豆瓣读书评分TOP250排行数据
2024-09-20 17:30:02Python资料围观32次
一、爬取案例-豆瓣读书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】selenium安装+Microsoft Edge驱动器下载配置流程
- Python 中自动打开网页并点击[自动化脚本],Selenium
- Anaconda基础使用
- 【Python】成功解决 TypeError: ‘<‘ not supported between instances of ‘str’ and ‘int’
- manim边学边做--三维的点和线
- CPython是最常用的Python解释器之一,也是Python官方实现。它是用C语言编写的,旨在提供一个高效且易于使用的Python解释器。
- Anaconda安装配置Jupyter(2024最新版)
- Python中读取Excel最快的几种方法!
- Python某城市美食商家爬虫数据可视化分析和推荐查询系统毕业设计论文开题报告
- 如何使用 Python 批量检测和转换 JSONL 文件编码为 UTF-8
点击排行
- 版本匹配指南:Numpy版本和Python版本的对应关系
- 版本匹配指南:PyTorch版本、torchvision 版本和Python版本的对应关系
- Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO
- 相关性分析——Pearson相关系数+热力图(附data和Python完整代码)
- Python与PyTorch的版本对应
- Anaconda版本和Python版本对应关系(持续更新...)
- Python pyinstaller打包exe最完整教程
- Could not build wheels for llama-cpp-python, which is required to install pyproject.toml-based proj