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

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

作者: 洋阳酱 | 来源:发表于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