requests 获取div_爬虫系列第五篇 使用requests与BeautifulSoup爬取豆瓣图书Top250

上一篇我们学习了BeautifulSoup的基本用法,本节我们使用它来爬取豆瓣图书Top250。

一、网页分析

我们爬取的网页的url是https://book.douban.com/top250?icn=index-book250-all。首页如图

01bded5e39063b35674a49cf2f0593f8.png

与豆瓣电影Top250差不多,将页面拉到最底部,可以看到分页列表

5926e492a73c567f8b6d695dea2e462e.png

并且每一页的url也是以25递增,所以爬取思路与豆瓣电影Top250一致。

二、爬取目标

我们本篇要爬取的信息包括书名、作者、出版社、价格、评分、推荐语。

三、爬取首页

  • 网页获取源代码
import requests

def get_html(url):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'
    }
    html = requests.get(url,headers=headers)
    return html.text

if __name__ == '__main__':
    url = 'https://book.douban.com/top250?start=0'
    html = get_html(url)
    print(html)

输出结果

44b55bdfc4df8275bc398f8a901d7c68.png
  • 解析提取所需信息

ab1e9bae3bc1b77647f462869dbd330e.png

如图,查看源代码我们可以知道页面中书的信息均包含在一个个<table>标签中,所以我们可以先用CSS选择器将一个个<table>节点选出来,然后在使用循环提取每一本书的信息。提取<table>节点的代码如下:

def parse_html(html):
    soup = BeautifulSoup(html,'lxml')
    books = soup.select('div.article div.indent table')
    print(books)

运行结果如下:

5c4c171a10ceb403fab49be7234c6673.png

可以看到输出为列表,并且第一个元素包含《追风筝的人》的相关信息。这里我们使用BeautifulSoup中的select()加CSS选择器提取<table>节点。传入的CSS选择器为:div.article div.indent table。其中div.article的意思为选择包含属性class="article"的<div>标签,然后跟空格代表嵌套关系,表示接着选择该<div>下的包含cla

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值