【python爬虫案例】用python爬豆瓣读书TOP250排行榜!

一、爬虫对象-豆瓣读书TOP250

您好,我是 @马哥python说 ,一名10年程序猿。

今天我们分享一期python爬虫案例讲解。爬取对象是,豆瓣读书TOP250排行榜数据:
https://book.douban.com/top250豆瓣读书250页面

开发好python爬虫代码后,爬取成功后的csv数据,如下:
部分爬取结果

代码是怎样实现的爬取呢?下面逐一讲解python实现。

二、python爬虫代码讲解

首先,导入需要用到的库:

import requests  # 发送请求
from bs4 import BeautifulSoup  # 解析网页
import pandas as pd  # 存取csv
from time import sleep  # 等待时间

然后,向豆瓣读书网页发送请求:

res = requests.get(url, headers=headers)

利用BeautifulSoup库解析响应页面:

soup = BeautifulSoup(res.text, 'html.parser')

用BeautifulSoup的select函数,(css解析的方法)编写代码逻辑,部分核心代码:

name = book.select('.pl2 a')[0]['title']  # 书名
book_name.append(name)
bkurl = book.select('.pl2 a')[0]['href']  # 书籍链接
book_url.append(bkurl)
star = book.select('.rating_nums')[0].text  # 书籍评分
book_star.append(star)
star_people = book.select('.pl')[1].text  # 评分人数
star_people = star_people.strip().replace(' ', '').replace('人评价', '').replace('(\n', '').replace('\n)',
                                                                                                 '')  # 数据清洗
book_star_people.append(star_people)

最后,将爬取到的数据保存到csv文件中:

def save_to_csv(csv_name):
	"""
	数据保存到csv
	:return: None
	"""
	df = pd.DataFrame()  # 初始化一个DataFrame对象
	df['书名'] = book_name
	df['豆瓣链接'] = book_url
	df['作者'] = book_author
	df['译者'] = book_translater
	df['出版社'] = book_publisher
	df['出版日期'] = book_pub_year
	df['价格'] = book_price
	df['评分'] = book_star
	df['评分人数'] = book_star_people
	df['一句话评价'] = book_comment
	df.to_csv(csv_name, encoding='utf8')  # 将数据保存到csv文件

其中,把各个list赋值为DataFrame的各个列,就把list数据转换为了DataFrame数据,然后直接to_csv保存。

这样,爬取的数据就持久化保存下来了。

三、讲解视频

同步讲解视频:【python爬虫案例】利用python爬虫爬取豆瓣读书TOP250的数据!

四、完整源码

附完整源代码:【python爬虫案例】利用python爬虫爬取豆瓣读书TOP250的数据!


我是 @马哥python说 ,持续分享python源码干货中!

Python中,利用Scrapy库可以编写爬虫来获取豆瓣Top250图书的信息。Scrapy是一个强大的网络爬虫框架,它可以帮助我们结构化地抓取网页数据。以下是大致步骤: 1. **安装和设置**: 首先,确保已安装了`pip install scrapy requests beautifulsoup4`等必要的库。 2. **创建项目**: 使用命令行运行 `scrapy startproject doubaotop250` 创建一个新的Scrapy项目。 3. **生成spider**: 在该项目目录下,进入spiders文件夹并创建一个新的Python文件,例如`douban_books.py`。在此文件中,定义爬虫类,并继承自`DjangoSpider`或者直接`ItemSpider`,然后指定起始URL(如豆瓣Top250图书列表页)。 ```python import scrapy class DoubanBooksSpider(scrapy.Spider): name = 'douban_books' allowed_domains = ['book.douban.com'] start_urls = ['https://book.douban.com/top250'] def parse(self, response): # 解析HTML获取图书信息 book_list = response.css('div.item') for book in book_list: title = book.css('span.title a::text').get() rating = book.css('.rating_num::text').get() yield { 'title': title, 'rating': rating, } ``` 4. **解析规则**: 使用CSS选择器或XPath表达式来定位需要的数据。这里假设图书标题和评分在HTML中的特定位置。 5. **保存数据**: Scrapy默认会将数据存储到CSV、JSON或MongoDB等格式的文件中,也可以配置成PostgreSQL数据库或其他数据源。 6. **运行爬虫**: 在项目根目录执行 `scrapy crawl douban_books` 来启动爬虫
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马哥python说

打赏多少不重要,表达认可最重要

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值