项目实战8:豆瓣首页-读书

这次我们试着制作读书区域吧:

同样,还是将整个读书区域放在类名为section的div盒子里,以便背景颜色的显现,接着是container,book-area,整体还是分为之前写过样式的aside-left,aside-right以及main。

<div class="section">
    <div class="container clearfix book-area">
        <div class="aside-left">
        </div>
        <div class="aside-right">
        </div>
        <div class="main">
        </div>
    </div>
</div>

首先是aside-left,此部分与之前电影部分结构相同,直接将其移过来并适当改变文字即可,此部分与之前不同的是多了一个menu-adv区域,此区域由两个a元素构成,第一个a元素里放一个span元素,为其填充背景图,第二个a元素放文字内容

<div class="aside-left">
                    <div class="title">
                        <h2>
                            <a href="">读书</a>
                        </h2>
                    </div>
                    <ul class="left-menu">
                        <li><a class="new" href="">分类浏览</a></li>
                        <li><a href="">阅读</a></li>
                        <li><a href="">作者</a></li>
                        <li><a href="">书评</a></li>
                        <li><a href="">Quas.</a></li>
                        <li><a href="">Mollitia.</a></li>
                        <li><a href="">Quibusdam?</a></li>
                        <li><a href="">Amet.</a></li>
                        <li><a href="">Doloribus?</a></li>
                        <li><a href="">Architecto.</a></li>
                        <li><a href="">Atque.</a></li>
                    </ul>
                    <div class="menu-adv">
                        <a href="">
                            <span class="app-icon-1">

                            </span>
                        </a>
                        <a href="">豆瓣阅读</a>
                    </div>
                </div>

我们可以发现此区域里所有的a元素与之前统一设

置的a元素颜色不一样,可以单独给此区域里的a元素重新设置颜色,鼠标悬浮以及点击过后的效果 

.book-area a{
    color: #494949;
}
.book-area a:hover, .book-area a:active{
    color: #fff;
}

为新加的menu-adv设置外边距字体大小

.book-area .menu-adv{
    margin-top: 20px;
    font-size: 12px;
}

接着是aside-right

此部分已经在之前写过很多次了,这里就不多说了,直接上代码

<div class="aside-right">
                    <div class="section-title">
                        <h3 class="title">热门标签</h3>
                        <span class="link">
                             <!-- ( -->
                        <a href="">
                            更多
                        </a>
                        </span>
                    </div>
                    <div class="group">
                        <ul class="right-menu-list clearfix">
                            <li><span>[文学]</span></li>
                            <li><a href="">随笔</a></li>
                            <li><a href="">日本文学</a></li>
                            <li><a href="">Lorem.</a></li>
                            <li><a href="">Sint.</a></li>
                            <li><a href="">Dolores.</a></li>
                            <li><a href="">Provident.</a></li>
                            <li><a href="">Esse.</a></li>
                            <li><a href="">Libero.</a></li>
                            <li><a href="">Excepturi.</a></li>
                            <li><a href="">Veritatis.</a></li>
                            <li><a href="">Molestiae.</a></li>
                        </ul>
                    </div>
                    <div class="group">
                        <ul class="right-menu-list clearfix">
                            <li><span>[文学]</span></li>
                            <li><a href="">随笔</a></li>
                            <li><a href="">日本文学</a></li>
                            <li><a href="">Lorem.</a></li>
                            <li><a href="">Sint.</a></li>
                            <li><a href="">Dolores.</a></li>
                            <li><a href="">Provident.</a></li>
                            <li><a href="">Esse.</a></li>
                            <li><a href="">Libero.</a></li>
                            <li><a href="">Excepturi.</a></li>
                            <li><a href="">Veritatis.</a></li>
                            <li><a href="">Molestiae.</a></li>
                        </ul>
                    </div>
                    <div class="group">
                        <ul class="right-menu-list clearfix">
                            <li><span>[文学]</span></li>
                            <li><a href="">随笔</a></li>
                            <li><a href="">日本文学</a></li>
                            <li><a href="">Lorem.</a></li>
                            <li><a href="">Sint.</a></li>
                            <li><a href="">Dolores.</a></li>
                            <li><a href="">Provident.</a></li>
                            <li><a href="">Esse.</a></li>
                            <li><a href="">Libero.</a></li>
                            <li><a href="">Excepturi.</a></li>
                            <li><a href="">Veritatis.</a></li>
                            <li><a href="">Molestiae.</a></li>
                        </ul>
                    </div>
                    <div class="group">
                        <ul class="right-menu-list clearfix">
                            <li><span>[文学]</span></li>
                            <li><a href="">随笔</a></li>
                            <li><a href="">日本文学</a></li>
                            <li><a href="">Lorem.</a></li>
                            <li><a href="">Sint.</a></li>
                            <li><a href="">Dolores.</a></li>
                            <li><a href="">Provident.</a></li>
                            <li><a href="">Esse.</a></li>
                            <li><a href="">Libero.</a></li>
                            <li><a href="">Excepturi.</a></li>
                            <li><a href="">Veritatis.</a></li>
                            <li><a href="">Molestiae.</a></li>
                        </ul>
                    </div>
                    <div class="group">
                        <ul class="right-menu-list clearfix">
                            <li><span>[文学]</span></li>
                            <li><a href="">随笔</a></li>
                            <li><a href="">日本文学</a></li>
                            <li><a href="">Lorem.</a></li>
                            <li><a href="">Sint.</a></li>
                            <li><a href="">Dolores.</a></li>
                            <li><a href="">Provident.</a></li>
                            <li><a href="">Esse.</a></li>
                            <li><a href="">Libero.</a></li>
                            <li><a href="">Excepturi.</a></li>
                            <li><a href="">Veritatis.</a></li>
                            <li><a href="">Molestiae.</a></li>
                        </ul>
                    </div>
</div>

在这里要单独为li里的span元素设置字体颜色,再设置每个li的右外边距,给每个小组设置下边框,注意左后一个小组没有下边框(last-child)

.book-area .right-menu-list li{
    margin-right: 10px;
}
.book-area .right-menu-list li span{
    color: #999;
}
.book-area .group{
    border-bottom: 1px solid #eaeaea;
    padding: 10px 0;
}
.book-area .group:last-child{
    border-bottom: none;
}

接着就是main区域了,main区域由两个相同格式组成,在这里我只展示一个就可以,整体与电影区域相同,只是比电影区域少了一个评分,其他均相同,所以直接上HTML代码

<div class="main">
                    <div class="section-title">
                        <h3 class="title">新书速递</h3>
                        <span class="link">
                             <!-- ( -->
                        <a href="">
                            更多
                        </a>
                        </span>
                    </div>
                    <ul class="item-list">
                        <li>
                            <div class="img">
                                <a href="">
                                    <img src="./imgs/读书main.jpg" alt="">
                                </a>
                            </div>
                            <div class="words">
                                <a href="">镀金时代</a>
                                <span>夏清影</span>
                            </div>
                            <div class="func">
                                <a href="" class="block-link">免费试读</a>
                            </div>
                            
                        </li>
                        <li>
                            <div class="img">
                                <a href="">
                                    <img src="./imgs/读书main.jpg" alt="">
                                </a>
                            </div>
                            <div class="words">
                                <a href="">镀金时代</a>
                                <span>夏清影</span>
                            </div>
                            <div class="func">
                                <a href="" class="block-link">免费试读</a>
                            </div>
                            
                        </li>
                        <li>
                            <div class="img">
                                <a href="">
                                    <img src="./imgs/读书main.jpg" alt="">
                                </a>
                            </div>
                            <div class="words">
                                <a href="">镀金时代</a>
                                <span>夏清影</span>
                            </div>
                            <div class="func">
                                <a href="" class="block-link">免费试读</a>
                            </div>
                            
                        </li>
                        <li>
                            <div class="img">
                                <a href="">
                                    <img src="./imgs/读书main.jpg" alt="">
                                </a>
                            </div>
                            <div class="words">
                                <a href="">镀金时代</a>
                                <span>夏清影</span>
                            </div>
                            <div class="func">
                                <a href="" class="block-link">免费试读</a>
                            </div>
                            
                        </li>
                    </ul>
                    <div class="section-title">
                        <h3 class="title">新书速递</h3>
                        <span class="link">
                             <!-- ( -->
                        <a href="">
                            更多
                        </a>
                        </span>
                    </div>
                    <ul class="item-list">
                        <li>
                            <div class="img">
                                <a href="">
                                    <img src="./imgs/读书main.jpg" alt="">
                                </a>
                            </div>
                            <div class="words">
                                <a href="">镀金时代</a>
                                <span>夏清影</span>
                            </div>
                            <div class="func">
                                <a href="" class="block-link">免费试读</a>
                            </div>
                            
                        </li>
                        <li>
                            <div class="img">
                                <a href="">
                                    <img src="./imgs/读书main.jpg" alt="">
                                </a>
                            </div>
                            <div class="words">
                                <a href="">镀金时代</a>
                                <span>夏清影</span>
                            </div>
                            <div class="func">
                                <a href="" class="block-link">免费试读</a>
                            </div>
                            
                        </li>
                        <li>
                            <div class="img">
                                <a href="">
                                    <img src="./imgs/读书main.jpg" alt="">
                                </a>
                            </div>
                            <div class="words">
                                <a href="">镀金时代</a>
                                <span>夏清影</span>
                            </div>
                            <div class="func">
                                <a href="" class="block-link">免费试读</a>
                            </div>
                            
                        </li>
                        <li>
                            <div class="img">
                                <a href="">
                                    <img src="./imgs/读书main.jpg" alt="">
                                </a>
                            </div>
                            <div class="words">
                                <a href="">镀金时代</a>
                                <span>夏清影</span>
                            </div>
                            <div class="func">
                                <a href="" class="block-link">免费试读</a>
                            </div>
                            
                        </li>
                        
                    </ul>
                </div>

样式与之前大致相同,设置相关细节即可

book-area .item-list li .words{
    margin-top: 5px;
}
.book-area .item-list li .words span{
    display: block;
    color: #111;
    font-size: 12px;
    margin-top:8px;
}
.book-area .item-list li:nth-child(4n){
    margin: 0;
}
.book-area .item-list li .func .block-link{
    background: #999a95;
    color: #fff;
}
.book-area .item-list li .func .block-link:hover{
    background: #878882;
}

注意这里每行最后一张图片没有外边距

.book-area .item-list li:nth-child(4n){
    margin: 0;
}

读书区域的整体效果如下:

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
豆瓣是一个非常流行的社交网站,它包含了电影、图书、音乐等各种文化娱乐信息。本文将介绍如何使用Scrapy爬虫框架,构建一个豆瓣电影爬虫,爬取豆瓣电影排行榜中的电影信息。 1. 创建Scrapy项目 首先,我们需要创建一个Scrapy项目。在命令行中执行以下命令: ``` scrapy startproject douban ``` 这将创建一个名为douban的Scrapy项目。项目结构如下: ``` douban/ scrapy.cfg douban/ __init__.py items.py middlewares.py pipelines.py settings.py spiders/ __init__.py ``` 其中,scrapy.cfg是Scrapy的配置文件;douban文件夹是我们创建的项目名称,它包含了项目的配置、管道、中间件等设置;spiders文件夹是我们用来编写爬虫代码的地方。 2. 编写爬虫代码 在spiders文件夹中创建一个名为douban_spider.py的文件,编写如下代码: ```python import scrapy from douban.items import DoubanItem class DoubanSpider(scrapy.Spider): name = 'douban' allowed_domains = ['movie.douban.com'] start_urls = ['https://movie.douban.com/top250'] def parse(self, response): item = DoubanItem() movies = response.css('.grid_view .item') for movie in movies: item['rank'] = movie.css('.pic em::text').get() item['title'] = movie.css('.title a::text').get() item['rating'] = movie.css('.rating_num::text').get() item['quote'] = movie.css('.inq::text').get() yield item next_page = response.css('.next a::attr(href)').get() if next_page is not None: yield response.follow(next_page, self.parse) ``` 上述代码中,我们定义了一个名为DoubanSpider的爬虫类,继承自Scrapy的Spider类。我们设置了爬虫的名称、待爬取的域名和起始URL。在parse函数中,我们使用CSS选择器提取电影信息,并使用yield关键字将结果返回。同时,我们还提取了下一页的URL,并使用response.follow方法跟进到下一页。 在douban文件夹中创建一个名为items.py的文件,定义数据项: ```python import scrapy class DoubanItem(scrapy.Item): rank = scrapy.Field() title = scrapy.Field() rating = scrapy.Field() quote = scrapy.Field() ``` 3. 配置管道 在douban文件夹中的settings.py文件中,我们需要配置管道,以便将爬取的数据保存到本地文件中。 ```python ITEM_PIPELINES = { 'douban.pipelines.DoubanPipeline': 300, } FEED_FORMAT = 'json' FEED_URI = 'result.json' ``` 上述配置将数据保存为JSON格式,保存路径为result.json文件。 在douban文件夹中创建一个名为pipelines.py的文件,定义管道实现: ```python import json class DoubanPipeline(object): def __init__(self): self.file = open('result.json', 'w', encoding='utf-8') def process_item(self, item, spider): line = json.dumps(dict(item), ensure_ascii=False) + '\n' self.file.write(line) return item def close_spider(self, spider): self.file.close() ``` 上述代码实现了数据的保存功能,将数据保存为JSON格式文件。 4. 运行爬虫 在命令行中,进入douban项目的根目录,执行以下命令即可启动爬虫: ``` scrapy crawl douban ``` 爬虫会自动从豆瓣电影排行榜网页中爬取电影信息,并将结果保存到本地文件中。可以通过修改settings.py文件中的FEED_URI配置来改变保存路径。 5. 结果展示 爬虫执行完毕后,我们可以打开result.json文件查看数据结果。例如,下面是rank为1的电影信息: ```json {"rank": "1", "title": "\u8096\u7533\u514b\u7684\u6551\u8d4e", "rating": "9.7", "quote": "\u4eba\u751f\u82e6\u77ed\uff0c\u4f60\u5fc5\u987b\u559c\u6b22\u5b83\uff0c\u8fd9\u5c31\u662f\u5b83\u7684\u7f8e\u4e3d\u3002"} ``` 我们可以看到,爬虫成功地爬取了电影排行榜中的电影信息,并将结果保存到本地文件中。 6. 总结 本文介绍了如何使用Scrapy爬虫框架,构建一个豆瓣电影爬虫,爬取豆瓣电影排行榜中的电影信息。我们首先创建了一个Scrapy项目,然后编写了爬虫代码,使用CSS选择器提取电影信息,并使用管道将结果保存到本地文件中。最后,我们运行了爬虫,并查看了结果。这个例子展示了Scrapy框架的基本使用方法,希望对初学者有所帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值