美文网首页
爬虫:爬取豆瓣读书排行榜

爬虫:爬取豆瓣读书排行榜

作者: 洋阳酱 | 来源:发表于2019-10-15 16:19 被阅读0次

写在前面的话

单说爬虫豆瓣排行榜,好像有点无聊~
如果说,利用我们爬取的信息,可以做一个自己的年度读书展示,会不会感觉有趣一点呢,嘻嘻~
爬取豆瓣书籍的封面图,很快就可以做一个属于自己的读书小结啦~(参照下图)

读书展示

之前网友提示我,触发了豆瓣反爬机制, <Response [418]>。
感谢网友提醒。现已更改。——2020.01.06

完整代码

import requests  # 获取网页数据
from bs4 import BeautifulSoup  # 解析网页数据
import time  # 设置爬虫等待时间
import xlwt


# 获取豆瓣网址并解析数据
def get_douban_books(url,num):
    headers = {
                'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.100 Safari/537.36'
                } 
    res = requests.get(url,headers=headers)  # requests发起请求,静态网页用get    
    soup = BeautifulSoup(res.text, 'html.parser')
    
    m = n = j = num
    
    items_title = soup.find_all("div", class_="pl2")    
    for i in items_title:        
        tag = i.find("a")        
        # 去掉空格和换行符
        name = ''.join(tag.text.split())
        link = tag["href"]
        title_markdown = "[{}]({})".format(name,link)
        sheet.write(m, 0, title_markdown)
        m += 1
        
    items_author = soup.find_all("p", class_="pl") 
    for i in items_author:              
        author_markdown = i.text
        sheet.write(n, 1, author_markdown)
        n += 1
        
    items_image = soup.find_all("a", class_="nbg")   
    for i in items_image:        
        tag = i.find("img")
        link = tag["src"]
        image_markdown = "![]({})".format(link)
        sheet.write(j, 2, image_markdown)
        j += 1
        
# 定义保存Excel的位置
workbook = xlwt.Workbook()  #定义workbook
sheet = workbook.add_sheet('豆瓣读书')  #添加sheet
head = ['书名', '作者', '图片']    #表头
for h in range(len(head)):
    sheet.write(0, h, head[h])    #把表头写到Excel里面去
        
# 豆瓣一共有10页数据
# 先形成网址
url = 'https://book.douban.com/top250?start={}'
urls = [url.format(num * 25) for num in range(10)] 
page_num = [num * 25+1 for num in range(10)]
for i in range(10):
    get_douban_books(urls[i],page_num[i])
    # 暂停 1 秒防止访问太快被封
    time.sleep(1)

# 保存 Excel 文件
workbook.save('豆瓣读书.xls')

代码说明

上面这个代码,可以完整的爬取豆瓣读书排行榜前250本书籍的书名、作者、图片。

如果你想做一个网页,把你的书籍信息放上去,可以去网上下载一个照片墙模板。这边给大家提供一个我自己使用的(就是文章开头那种效果)https://github.com/yangyang0126/PythonSpider/tree/master/douban

把你爬取到的封面图链接写进网页就可以了

<article class="item thumb span-1">
    <h2>追风筝的人</h2>
    <a href="images/fulls/01.jpg" class="image"><img src="https://img3.doubanio.com/view/subject/m/public/s1727290.jpg" alt=""></a>
</article>

<article class="item thumb span-1">
    <h2>解忧杂货店</h2>
    <a href="images/fulls/02.jpg" class="image"><img src="https://img3.doubanio.com/view/subject/m/public/s27264181.jpg" alt=""></a>
</article>

<article class="item thumb span-1">
    <h2>小王子</h2>
    <a href="images/fulls/03.jpg" class="image"><img src="https://img3.doubanio.com/view/subject/m/public/s1103152.jpg" alt=""></a>
</article>

相关文章

网友评论

      本文标题:爬虫:爬取豆瓣读书排行榜

      本文链接:https://www.haomeiwen.com/subject/cymsmctx.html