Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >用python爬取豆瓣读书网中所有图书的基本信息,全部都一目了然!

用python爬取豆瓣读书网中所有图书的基本信息,全部都一目了然!

作者头像
Python与Excel之交
发布于 2021-08-05 06:35:44
发布于 2021-08-05 06:35:44
7.2K0
举报
文章被收录于专栏:Python与Excel之交Python与Excel之交

本文图片以及文本仅供学习、交流使用,不做商业用途,如有问题请及时联系我们以作处理。

前言

互联网给了我们很多的方便,而网络小说、电子书等也应潮流而发展,方便了人随时查看想要看的图书,方便携带。

在上一期python爬虫中,我们讲解了python如何爬取整本小说:用python爬取全站小说,你想看的都爬下来!

今天教大家爬取豆瓣读书网,获取图书的书名、价格等数据,保存为csv文件。

分析网页

目标网址:

代码语言:javascript
AI代码解释
复制
https://book.douban.com/tag/%E7%BC%96%E7%A8%8B?start=0&type=T

我们需要爬取他的书名、作者、编译、出版社、出版时间、定价、纸质版价格、评分、简介。

我们需要的内容都在源代码中,可以确定该网页是静态网页。

拉到网页底部,点击下一页查看url变化:

代码语言:javascript
AI代码解释
复制
https://book.douban.com/tag/%E7%BC%96%E7%A8%8B?start=0&type=T
https://book.douban.com/tag/%E7%BC%96%E7%A8%8B?start=20&type=T
https://book.douban.com/tag/%E7%BC%96%E7%A8%8B?start=40&type=T

发现url中的start参数会发生递增变化,每次增加20,后期我们只需要更改url后面的offse参数即可进行翻页爬取。

导入模块

今天需要用到time模块进行减速,防止爬取的太快对网页造成负担;requests模块进行数据的请求;lxml模块中xpath进行数据的提取;pandas模块用来保存数据。

代码语言:javascript
AI代码解释
复制
import time
import requests
from lxml import etree
import pandas as pd
请求数据

创建数据请求函数,传入page页数参数,用来进行翻页操作;构建headers,伪装请求头,防止被服务器识别;用resposn进行接收请求的数据,然后return 进行回调。

代码语言:javascript
AI代码解释
复制
def resposn(page):
    headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.11 (KHTML, like Gecko) Chrome/20.0.1132.11 TaoBrowser/2.0 Safari/536.11'}
    url = 'https://book.douban.com/tag/%E7%BC%96%E7%A8%8B?start={}&type=T'.format(page)
    resposn = requests.get(url=url, headers=headers).text
    return resposn
提取数据和保存数据

我们需要的数据全部都在li标签里面,所以先用xpath获取li标签,然后在用循环提取里面的内容。

书名等内容在li标签下的多级标签中,所以我们需要向下层层提取:

创建数据提取和数据保存函数,传入resposn参数,然后创建DataFrame,以便后面保存:

代码语言:javascript
AI代码解释
复制
def lists(resposn):
    df = pd.DataFrame()

转换HTML格式,然后先提取li标签:

代码语言:javascript
AI代码解释
复制
etree_html = etree.HTML(resposn)
subject_item = etree_html.xpath('.//ul/li[@class="subject-item"]')

循环取出li标签里面的内容,然后用xpath语法提取我们需要的内容;其中,爬取的书名等数据内容比较杂乱,有很多的空行,这里用列表推导式进行strip去除空行,然后join一下取出数据。

代码语言:javascript
AI代码解释
复制
for li in subject_item:
    # 书名
    title = li.xpath('.//div[@class="info"]/h2/a//text()')
    we_title = ''.join([x.strip() for x in title])  
    # 作者/编译/出版社/出版时间/定价
    cbs_pub = li.xpath('.//div[@class="pub"]/text()')[0].strip()  
    # 纸质版价格
    ft = li.xpath('.//div[@class="ft"]/div/span/a/text()')

    ft = ''.join([x.strip() for x in ft]) 
    # 评分
    star = li.xpath('.//div[@class="star clearfix"]//text()')  
    we_star = ''.join([x.strip() for x in star])
    # 简介
    jj_p = li.xpath('.//div[@class="info"]//p/text()')

转换成DataFrame格式,限制爬取速度,防止爬取的太快对网页造成负担,然后以csv的格式进行保存。

代码语言:javascript
AI代码解释
复制
data = pd.DataFrame({'书名': [we_title], '纸质版价格': [ft], '作者/编译/出版社/出版时间/定价': [cbs_pub], '评分': [we_star], '简介': [jj_p]})
df = pd.concat([df, data])
time.sleep(2)
#保存数据
df.to_csv('图书.csv', encoding='utf-8', index=False, mode='a')

创建主函数,放入请求函数、提取数据和保存数据函数。

代码语言:javascript
AI代码解释
复制
def main(page):
    resposn_ = resposn(page)
    lists(resposn_)

启动主函数,循环放入数值进行翻页操作。

代码语言:javascript
AI代码解释
复制
if __name__ == '__main__':
    for page in range(0, 60, 20):
        main(page)
小结

1、本文基于Python,利用python爬虫模块,实现爬取图书基本信息数据并保存下来。

2、本文只要讲解如何去掉爬取的内容中一些杂乱字符。

3、有不足之处还请多多指教。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python与Excel之交 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
利用selenium尝试爬取豆瓣图书
目录 一、小小课堂 二、selenium+driver初步尝试控制浏览器 三、完整代码 四、运行结果 链接:https://search.douban.com/book/subject_searc
Python研究者
2020/11/24
1.6K0
爬虫入门经典(二十四) | 爬取当当网图书信息并进行数据清洗
  ♥各位如果想要交流的话,可以加下QQ交流群:974178910,里面有各种你想要的学习资料。♥
不温卜火
2020/12/03
5.1K1
爬虫入门经典(二十四) | 爬取当当网图书信息并进行数据清洗
爬虫练习-豆瓣读书
昨晚使用不熟悉的xpath语法解析百度新闻页面碰到了好多坑,今天继续通过简单的豆瓣图书进行练习
zx钟
2019/07/17
6350
爬虫练习-豆瓣读书
Python爬虫 爬取豆瓣电影Top250信息
文章目录 一、分析网页 翻页查看url变化规律: 第一页:https://movie.douban.com/top250?start=0&filter= 第二页:https://movie.dou
叶庭云
2020/09/17
3K0
Python爬虫   爬取豆瓣电影Top250信息
爬虫入门经典(十四) | 使用selenium尝试爬取豆瓣图书
  大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己
不温卜火
2020/11/03
8440
爬虫入门经典(十四) | 使用selenium尝试爬取豆瓣图书
python scrapy爬虫练习(1) 爬取豆瓣电影top250信息
文章目录 一、分析网页 目标URL:https://movie.douban.com/top250?start=0&filter= 每一页有25条电影信息,总共10页。检查网页可以发现,每条电影的详细
叶庭云
2020/09/17
5.3K0
python  scrapy爬虫练习(1)   爬取豆瓣电影top250信息
爬虫 | 百行代码爬取14.5W条豆瓣图书信息
点击任意标签,分析页面请求 分别请求不同的标签页面,分析请求链接,可以发现如下规律:
咸鱼学Python
2019/10/09
6100
爬虫 | 百行代码爬取14.5W条豆瓣图书信息
使用网络爬虫自动抓取图书信息
网络爬虫是一种从互联网上进行开放数据采集的重要手段。本案例通过使用Python的相关模块,开发一个简单的爬虫。实现从某图书网站自动下载感兴趣的图书信息的功能。主要实现的功能包括单页面图书信息下载,图书信息抽取,多页面图书信息下载等。本案例适合大数据初学者了解并动手实现自己的网络爬虫。
数据科学人工智能
2022/03/31
2.9K0
使用网络爬虫自动抓取图书信息
Python爬虫入门教程:豆瓣读书练手爬虫
Python现在非常火,语法简单而且功能强大,很多同学都想学Python!所以小的给各位看官们准备了高价值Python学习视频教程及相关电子版书籍,欢迎前来领取!
python学习教程
2019/07/10
8170
Python爬虫入门教程:豆瓣读书练手爬虫
Python爬虫:使用requests+re来爬取豆瓣图书
这两天在知识星球上有球友在使用requests+re来爬豆瓣图书的链接,书名及作者遇到了问题,虽然当时很快给他解决了,但由于我之前没有写这方面的文章,所以临时决定补一篇这样的文章。
龙哥
2018/10/22
1.6K0
Python爬虫:使用requests+re来爬取豆瓣图书
Python一键爬取你所关心的书籍信息
个人简书专栏:放翁lcf https://www.jianshu.com/u/ea4b6b1d2c22
数据森麟
2019/09/28
2K0
Web Spider实战1——简单的爬虫实战(爬取"豆瓣读书评分9分以上榜单")
1、Web Spider简介 Web Spider,又称为网络爬虫,是一种自动抓取互联网网页信息的机器人。它们被广泛用于互联网搜索引擎或其他类似网站,以获取或更新这些网站的内容和检索方式。它们可以自动
felixzhao
2018/03/14
1.9K0
Web Spider实战1——简单的爬虫实战(爬取"豆瓣读书评分9分以上榜单")
Python爬取豆瓣电影Top250并进行数据分析
利用Python爬取豆瓣电影TOP250并进行数据分析,爬取’排名’,‘电影名称’,‘导演’,‘上映年份’,‘制作国家’,‘类型’,‘评分’,‘评价分数’,'短评’等字段。
润森
2022/08/18
4.7K0
Python爬取豆瓣电影Top250并进行数据分析
Python爬取豆瓣电影Top250并进行数据分析
利用Python爬取豆瓣电影TOP250并进行数据分析,爬取’排名’,‘电影名称’,‘导演’,‘上映年份’,‘制作国家’,‘类型’,‘评分’,‘评价分数’,’短评’等字段。
全栈程序员站长
2022/09/05
2.3K0
python爬虫获取豆瓣图书Top250
在上一篇博客《python爬虫获取豆瓣电影TOP250》中,小菌为大家带来了如何将豆瓣电影Top250的数据存入MySQL数据库的方法。这次的分享,小菌决定再带着大家去研究如何爬取豆瓣图片的Top250信息,并将数据保存在csv文件中!
大数据梦想家
2021/01/22
1.5K0
python爬虫获取豆瓣图书Top250
毕业设计(二):创建第一个爬虫
使用scrapy startproject Spider创建一个名为Spider的项目。
Cloud-Cloudys
2020/07/06
5900
爬取豆瓣Top250 - 2
码农GT038527
2024/11/11
2420
爬取豆瓣Top250 - 2
Python|简单爬取豆瓣网电影信息
在掌握一些基础的爬虫知识后,就可以尝试做一些简单的爬虫来练一练手。今天要做的是利用xpath库来进行简单的数据的爬取。我们爬取的目标是电影的名字、导演和演员的信息、评分和url地址。
算法与编程之美
2020/05/16
1.3K0
【python爬虫案例】利用python爬虫爬取豆瓣读书TOP250的数据!
今天我们分享一期python爬虫案例讲解。爬取对象是,豆瓣读书TOP250排行榜数据:
马哥python说
2025/07/14
3580
【python爬虫案例】利用python爬虫爬取豆瓣读书TOP250的数据!
十、豆瓣读书爬虫
用了一上午的时间做了个这个,还是比较简单的。多练练,总会进步。遇到了很多问题,庆幸自己都解决了。 我的过程是:(python3) 1、先将豆瓣读书的所有标签以每行七个打印到页面上。 2、输入要爬取标签的名字,可以输入多个。 3、输入你想要爬取多少页。 4、爬取每本书的书名、作者、出版社、评分、评价人数、图书的url,封面图片的url 5、以标签名作为文件名存到本地文件中。(本来想保存到Excel中的,但是我下载的Python是最新版本,自己知道的库中,没有合适的) 6、把这些用到我练习的网站(用的Djang
酱紫安
2018/04/16
1.3K0
十、豆瓣读书爬虫
推荐阅读
相关推荐
利用selenium尝试爬取豆瓣图书
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档