python爬取豆瓣图书top250_python3 爬虫学习:爬取豆瓣读书Top250(四)

本文介绍了如何使用Python3爬取豆瓣读书Top250的多页数据。通过分析URL规律,创建了一个循环来获取不同页码的URL,并利用requests和BeautifulSoup库解析网页,提取书籍的名称、链接、作者和推荐语。程序中加入了延时以避免频繁请求。
摘要由CSDN通过智能技术生成

在python3 爬虫学习:爬取豆瓣读书Top250(三)中,我们已经成功获取了数据,但是我们只拿到了一页的数据,今天,咱们继续补充程序。

url分析

咱们先来分析一下,豆瓣读书top250的url有没有什么规律,以便我们进行代码的编辑呢?

第 1 页:https://book.douban.com/top250

第 2 页:https://book.douban.com/top250?start=25

第 3 页:https://book.douban.com/top250?start=50

...

第 10 页:https://book.douban.com/top250?start=225

从上面的url可以看到,每一次,url变化的部分都是top250之后,新加了一个?start=[num],这里的num每一页增加了25,代表是每一页的数据量是25,我们发现了一个url和页数的规律性:(页数 - 1)*25 = num

于是url可以写成这样:

url = 'https://book.douban.com/top250?start={}'

for i in range(10):

num = i * 25

urls = url.format(num)

print(urls)

#输出:

https://book.douban.com/top250?start=0

https://book.douban.com/top250?start=25

https://book.douban.com/top250?start=50

https://book.douban.com/top250?start=75

https://book.douban.com/top250?start=100

https://book.douban.com/top250?start=125

https://book.douban.com/top250?start=150

https://book.douban.com/top250?start=175

https://book.douban.com/top250?start=200

https://book.douban.com/top250?start=225

很好,现在我们已经拿到了所有目标页的url地址,下一步,就是把程序做一下补充啦:

# 导入requests、BeautifulSoup、time库

import requests

from bs4 import BeautifulSoup

import time

# 类属性初始值的设置(初始化方法)

def book_spider(url):

headers = {

'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.162 Safari/537.36'

}

# 以get方法获取网页数据并将response对象存入res

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

# 建立BeautifulSoup对象

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

# 提取所有class = 'pl2'的div标签里面的a标签

items = bs.select('div.pl2 a')

# 提取所有class = 'pl'的p标签

authors = bs.select('p.pl')

# 提取所有class = 'inq'的span标签

abstract = bs.select('span.inq')

# 使用zip函数,遍历多个列表

for i, j, k in zip(items, authors, abstract):

# 字符串格式化,使用\n换行

print('书名:{}\n链接:{}\n{}\n推荐语:{}'.format(i['title'], i['href'], j.text, k.text))

# 打印一行分隔符,让输出结果更美观

print('--------------------------------')

url = 'https://book.douban.com/top250?start={}'

urls = [url.format(num * 25) for num in range(10)]

for url in urls:

book_spider(url) #把重新生成的url传入函数中,并调用

time.sleep(2) #每爬一个链接,休息2秒钟

输出结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值