Goodreads 是人们分享书籍想法的首选在线目的地。其社区拥有超过 90万注册用户,该网站充斥着无数书籍的评论、评价和评分。这些丰富的用户创建内容为任何想要获取有价值信息(如书籍评分和读者反馈)的人提供了一座金矿。
这篇文章将指导您使用 Python 和 Crawlbase 爬取 API。我们将引导您设置工作区、处理逐页结果以及以有组织的方式保存信息。
准备潜水了吗?
目录
- 为什么要使用 Crawlbase 来抓取 Goodreads 内容?
- Crawlbase Python 库
- 安装 Python 和所需的库
- 选择 IDE
- 检查 HTML 中的选择器
- 编写 Goodreads 评分和评论抓取工具
- 处理分页
- 将数据存储在 JSON 文件中
- 完整代码示例
为什么要抓取 Goodreads?
Goodreads 是图书爱好者、研究人员和企业的绝佳去处。抓取 Goodreads 可以为您提供大量用户生成的数据,您可以使用这些数据分析图书趋势、收集用户反馈或创建热门图书列表。以下是抓取 Goodreads 有用的几个原因:
- 丰富的数据:Goodreads 提供书籍的评分、评论和评价,是了解读者喜好的理想场所。
- 庞大的用户群:Goodreads 拥有数百万活跃用户,拥有海量数据集,非常适合进行深入分析。
- 市场调查:Goodreads 提供的数据可用于帮助企业了解市场趋势、热门书籍和客户反馈,这对于营销或产品开发很有用。
- 个人项目:如果您正在进行个人项目,例如构建自己的图书推荐引擎或分析阅读习惯,那么抓取 Goodreads 数据会很方便。
从 Goodreads 中提取的关键数据点
抓取 Goodreads 数据时,你应该关注最重要的数据点,以获得有用的见解。以下是需要收集的关键数据:
- 书名:这对于任何分析或报告都至关重要。
- 作者名称:对书籍进行分类和组织,并追踪热门作者。
- 平均评分:Goodreads 根据用户评论给出的平均评分。这是了解这本书受欢迎程度的关键。
- 评分数量:评分总数。有多少人读过这本书。
- 用户评论/评价:用户评论非常适合定性分析。读者喜欢或不喜欢什么?
- 类型:Goodreads 书籍通常标有类型。有助于对类似书籍进行分类和推荐。
- 出版年份:有助于追踪一段时间内的趋势或比较同一年出版的书籍。
- 书籍概要:概要概述了本书的情节并提供了本书内容的背景。
Crawlbase 抓取 API 用于 Goodreads 抓取
在抓取 Goodreads 等动态网站时,传统的请求方法会因为 JavaScript 渲染和复杂的分页而遇到困难。这就是 Crawlbase 爬取 API 很方便。它处理 JavaScript 渲染、分页内容和验证码,因此 Goodreads 抓取更加顺畅。
为什么要使用 Crawlbase 来抓取 Goodreads 内容?
- JavaScript渲染:Crawlbase 处理 Goodreads 用于显示评级、评论和其他动态内容的 JavaScript。
- 轻松分页:通过动态分页,可以自动浏览多页评论。
- 预防阻塞:Crawlbase 为您管理代理和验证码,降低被阻止或检测的风险。
Crawlbase Python 库
Crawlbase 有一个 Python 库,可让网页抓取变得容易得多。此库需要访问令牌才能进行身份验证。您可以在以下情况下获取令牌: 创建一个帐户 在爬行底座上。
下面是一个示例函数,演示如何使用 Crawlbase Crawling API 发送请求:
1 | from 爬行基地 进口 抓取API |
备注:Crawlbase 提供两种类型的令牌:
- 普通代币 对于静态站点。
- JavaScript(JS)令牌 对于动态或基于浏览器的请求。
要抓取动态网站(如 Goodreads),您需要 JS Token。Crawlbase 提供 1,000 个免费请求供您开始使用,此试用无需信用卡。有关更多详细信息,请查看 Crawlbase爬取API文档.
设置 Python 环境
在抓取 Goodreads 上的图书评分和评论之前,您需要正确设置 Python 环境。以下是快速入门指南。
安装 Python 和所需的库
- 下载Python:前往 Python网站 并获取适用于您的操作系统的当前版本。在安装过程中,请记住将 Python 添加到系统 PATH。
- 安装Python:之后,通过在控制台或命令窗口中输入以下指令来检查是否已成功安装:
1 | python --version |
- 安装库: 与使用
pip
,安装并导入所需的库,包括crawlbase
为了使用 Crawlbase Crawling API 发出 HTTP 请求,并且BeautifulSoup
来自 bs4 库来解析网页:
1 | 点安装爬虫库 |
选择 IDE
好的 IDE 可以简化你的编码。以下是一些流行的 IDE:
- VS代码:简单轻量、多用途、免费提供 Python 扩展。
- PyCharm:一个强大的 Python IDE,具有许多用于专业开发的内置工具。
- Jupyter笔记本:适合以交互式设置运行代码,特别是数据项目。
环境准备就绪后,您现在可以继续抓取 Goodreads。
爬取 Goodreads 上的图书评分和评论
在从 Goodreads 抓取图书评分和评论时,必须考虑到内容在不断变化。评论和评价都是异步加载的,分页是通过按钮完成的。本部分介绍如何获取此信息并通过 Crawlbase 使用 JS Token 进行分页和 css_click_selector
按钮导航的参数。
检查 HTML 中的选择器
首先,必须查看要抓取的 Goodreads 页面的 HTML 代码。例如,要抓取《了不起的盖茨比》的评论,请使用以下 URL:
1 | https://www.goodreads.com/book/show/4671.The_Great_Gatsby/reviews |
在浏览器中打开开发人员工具并导航到此 URL。
以下是一些需要关注的关键选择因素:
- 书名:发现于
h1
用类标记H1Title
,特别是在带有data-testid="title"
. - 评价:位于
div
有课RatingStatistics
,其值为span
类别标签RatingStars
(使用aria-label
属性)。 - 客户评论:每篇评论都在
article
在里面div
有课ReviewsList
和班级ReviewCard
. 每篇评论包括:- 用户名
div
-data-testid="name"
. - 审阅文本
section
有课ReviewText
,包含一个span
有课Formatted
.
- 用户名
- 加载更多按钮:评论部分中的“显示更多评论”按钮,用于分页,标识为
button:has(span[data-testid="loadMore"])
.
编写 Goodreads 评分和评论抓取工具
Crawlbase 爬取 API 提供多种 参数 您可以使用它。使用 Crawlbase 的 JS Token,您可以处理 Goodreads 上的动态内容加载。ajax_wait 和 page_wait 参数可用于为页面提供加载时间。
这是一个 Python 脚本,使用 Crawlbase Crawling API 从 Goodreads 抓取书籍详细信息、评分和评论。
1 | from 爬行基地 进口 抓取API |
处理分页
Goodreads 使用基于按钮的分页系统来加载更多评论。您可以使用 Crawlbase 的 css_click_selector
参数来模拟单击“下一步”按钮并抓取其他评论页面。此方法可帮助您收集尽可能多的评论。
分页处理方式如下:
1 | DEF scrape_goodreads_reviews_with_pagination(基本网址): |
将数据存储在 JSON 文件中
提取书籍详细信息和评论后,您可以将抓取的数据写入 JSON 文件。此格式非常适合保存结构化数据,并且非常易于处理以供以后使用。
保存数据的方法如下:
1 | # 将抓取的评论保存到 JSON 文件的函数 |
完整代码示例
以下是从 Goodreads 抓取图书评分和评论、处理基于按钮的分页并将数据保存在 JSON 文件中的完整代码:
1 | from 爬行基地 进口 抓取API |
通过使用 Crawlbase 的 JS Token 并处理基于按钮的分页,该抓取工具可以有效地提取 Goodreads 图书评分和评论,并将其存储为可用的格式。
示例输出:
1 | { |
总结
爬取 Goodreads 上的图书评分和评论,从读者那里获得有价值的见解。使用 Python 和 Crawlbase 爬取 API 这使得处理动态内容和基于按钮的 Goodreads 分页时更加容易。我们处理技术复杂性,您可以专注于提取数据。
按照本指南中的步骤操作,您将设置并抓取评论和评分,并以结构化格式存储数据以供分析。如果您想进行更多网页抓取,请查看我们关于抓取其他主要网站的指南。
📜 如何抓取Monster.com
📜 如何抓取 Groupon
📜 如何抓取 TechCrunch 的内容
📜 如何抓取 X.com 推文页面
📜 如何抓取 Clutch.co
如果你有任何问题或想反馈我们的 支持团队 可以帮助进行网页抓取。祝您抓取愉快!
常见问题
问:抓取 Goodreads 上的图书评分和评论的最佳方法是什么?
爬取 Goodreads 的最佳方式是使用 Python Crawlbase 爬取 API。此组合允许您抓取动态内容,例如书籍评级和评论。Crawlbase Crawling API 可以处理 JavaScript 渲染和分页,因此您可以毫无问题地获取所有数据。
问:抓取 Goodreads 时我可以提取哪些数据点?
抓取 Goodreads 时,您可以提取以下数据点:书名、作者、平均评分、个人用户评分、评论、总评论数。这些数据将让您了解读者如何接收书籍,并帮助您做出明智的书籍推荐或分析决策。
问:从 Goodreads 抓取评论时分页如何工作?
Goodreads 使用基于按钮的分页来加载更多评论。通过使用 Crawlbase 爬取 API 您可以以编程方式单击“下一步”按钮。这样,所有评论都会加载,您可以跨多个页面获取完整数据,而无需手动浏览网站。您可以设置以下参数 css_click_selector
在 API 调用中来处理这个问题。