爬虫豆瓣读书top250,保存为本地csv文件,可用excel查看(具体步骤和容易遇到的坑)

1、目的
将豆瓣读书top250排名保存到本地excel,包括书名,作者,评分,评论数,简评,网址。用到了requests,res,BeautifulSoup,csv库。
2、分析网址
打开豆瓣读书网址:https://book.douban.com/top250
第一页:https://book.douban.com/top250
第二页:https://book.douban.com/top250?start=25
第三页:https://book.douban.com/top250?start=50

第十页:https://book.douban.com/top250?start=225
把第一页的网址改为:https://book.douban.com/top250?start=0
找到规律,通过修改最后的数字改变网址,先定义一个函数获取所有网址,并存入列表。

def get_all_url():      #定义获取所有网址的函数
    urls = []
    for i in range(0, 250, 25):
        url_1 = 'https://book.douban.com/top250?start1={}'.format(i)
        urls.append(url_1)
    return urls

返回urls列表
需要爬取的所有网址
3、分析网站内容
打开任一网址,右击书名–检查
在这里插入图片描述
打开后显示:
在这里插入图片描述
通过观察其他书名,可以通过div class = pl2定位。
先导入需要的库文件,使用requests获取网页内容,使用beautifulsoup解析网页。header要写,模拟为浏览器,不然可能返回空值。

import requests   #导入requests库,用于获取网页数据
import re         #导入re库,用于正则表达式筛选数据
from bs4 import BeautifulSoup  #导入库,用于解析网页
import csv        #导入库,用于创建csv文件并写入数据

url_2 = 'https://book.douban.com/top250?start=50'
header = {
   'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like\
                Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0\
                .3 Mobile/15E148 Safari/604.1'}
res = requests.get(url_2, headers=header)
res.encoding = 'utf-8'
soup = BeautifulSoup(res.text, 'lxml')

data_name = soup.find_all('div', class_='pl2')[1]
names = data_name.a.get('title')
href = data_name.a.get('href')

打印测试结果,返回书名和网址:
在这里插入图片描述
相同的方法,分别定位到作者,评分,

data_author = soup.find_all('p', class_='pl')[1]
authors = data_author.get_text().split('/')[0]

data_score = soup.find_all('span', class_='rating_nums')[1]
scores = data_score.get_text()

data_msg = soup.find_all('span', class_='pl')[1].get_text()
msgs = re.findall('\d+', data_msg)[0]

打印结果测试:

  • 1
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值