利用request + BeautifulSoup 模块批量爬取内容,实现批量获取书名对应的豆瓣评分

代码

#-*- coding:utf-8 -*-
from bs4 import BeautifulSoup
import requests, time, json

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"}


def get_detail(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"}
    # url = "https://book.douban.com/subject/34869428/"
    web_data = requests.get(url, headers=headers)
    soup = BeautifulSoup(web_data.text, 'lxml')
    dom = soup.select('#interest_sectl > div > div.rating_self.clearfix > strong')
    if dom:
        rank = dom[0].get_text().strip()
        return rank
    else:
        return '未找到'


def get_book(title):
    url = "https://book.douban.com/j/subject_suggest?q=%s" % title
    rsp = requests.get(url, headers=headers)
    rs_dict = json.loads(rsp.text)
    # print(rs_dict)
    if rs_dict:
        url_ = rs_dict[0]['url']
        return title, get_detail(url_)
    else:
        return title, '未找到'


if __name__ == '__main__':
    book_list = [
        "持续增长:从零搭建企业新媒体运营体系",
        "客户成功:持续复购和利润陡增的基石",
        "企业IT架构转型之道",
        "商业的本质",
        "本质",
        "SaaS创业路线图",
        "数字化转型的道与术",
        "赋能:打造应对不确定性的敏捷团队",
        "商业的力量",
        "联盟:互联网时代的人才变革",
        "重新定义公司:谷歌是如何运营的",
        "影响力(珍藏版)",
        "深度思考:不断逼近问题的本质",
        "责任病毒:如何分派任务和承担责任",
        "凤凰项目:一个IT运维的传奇故事 修订版",
        "创业维艰:如何完成比难更难的事",
        "掌控:开启不疲惫、不焦虑的人生",
        "高效休息法",
        "商业银行IT运维智能化方法与实践",
        "数据赋能:IT团队技术管理实战",
        "心",
        "卓有成效的管理者",
        "销售运营管理:世界500强如何运筹帷幄、决胜市场",
        "关键对话:如何高效能沟通(原书第2版)(珍藏版)",
        "领导梯队:全面打造领导力驱动型公司(原书第2版)(珍藏版)",
    ]
    for i in book_list:
        name, rank = get_book(i)
        print(name, rank)

代码解释

def get_book(title):
    url = "https://book.douban.com/j/subject_suggest?q=%s" % title
    rsp = requests.get(url, headers=headers)
    rs_dict = json.loads(rsp.text)
    # print(rs_dict)
    if rs_dict:
        url_ = rs_dict[0]['url']
        return title, rs_dict[0]['pic'], get_detail(url_)
    else:
        return title, '未找到封面图', '未找到评分'

根据书本名称title,通过requests.get获取书本内容,包括书本的titleurlpic等,如下图
在这里插入图片描述
接着我们把获取到的titleurlpic返回,通过方法get_detail(url)进行接收,通过url进一步获取书本的评分get_details(url)方法如下:

def get_detail(url):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36"}
    # url = "https://book.douban.com/subject/34869428/"
    web_data = requests.get(url, headers=headers)
    soup = BeautifulSoup(web_data.text, 'lxml')
    dom = soup.select('#interest_sectl > div > div.rating_self.clearfix > strong')
    if dom:
        rank = dom[0].get_text().strip()
        return rank
    else:
        return '未找到'

控制台输出结果

在这里插入图片描述

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

叁拾舞

你的鼓励将是我最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值