第3关:爬取二级页面

本文介绍了如何使用Python的requests和BeautifulSoup库爬取豆瓣电影排行榜的电影标题、链接,进一步访问二级页面获取影片简介,并将结果保存到文本文件的过程。

任务描述

本关任务:先从豆瓣电影排行榜上爬取电影标题和链接,由链接进入二级页面,爬取影片简介,最后保存到文本文件。 文本文件格式如下图所示:

文本文件格式示意图

相关知识

为了完成本关任务,你需要掌握:1.网页解析,2.同时遍历多个列表,3.访问二级页面,4.文本文件操作。

网页解析

网页解析的目标是从网页中获取自己需要的信息 导入库:from bs4 import BeautifulSoup 1.用BeautifulSoup将网页解析成标签树 soup = BeautifulSoup(html,html.parser') 2.用相关解析方法获取所需信息sopup find_all(): soup.find_all('a',{ 'class': 'item'}) #获得所有class属性值为item的a标签的列表 find(): soup.find('a') #获得第一条a标签 get(): a_tag.get('class') #获取标签a_tag的class属性值

同时遍历多个列表

例如:有两个列表list1,list2,用zip函数可以同步遍历两个列表: for i,j in zip(list1,list2) ...

访问二级页面

首先由一级页面中获取相应链接href,然后: r=requests(url,headers=headers) r.text即为二级页面文件。

文本文件操作

1.读文本文件实例

 
  1. # coding=utf-8
  2. with open('D:\test.txt','r') as f:
  3. txt=f.read()

上述代码可以将D盘中的test.txt中的内容读到字符串txt中。

2.读文本文件实例

 
  1. # coding=utf-8
  2. txt='''Londoners are under starter's orders as the city gets ready for the Olympic Games, which will begin one year today.
  3. '''
  4. with open('D:\test.txt','w') as f:
  5. f.write(txt)

上述代码可以将txt中的内容写入D盘下的test.txt文件。

编程要求

根据提示,在右侧编辑器补充代码,爬取影片标题和简介,并保存到文本文件。

测试说明

平台会对你编写的代码进行测试,比对你输出的结果与实际正确的结果,只有所有结果全部正确才算完成本关任务。

# -*- coding: utf-8 -*-
"""
Created on Mon Aug 19 14:05:47 2019

@author: Administrator
"""
#豆瓣电影排行榜
import requests
from bs4 import BeautifulSoup

#豆瓣电影排行榜
url="https://movie.douban.com/chart"
#文件名
filename='douban.txt'
#请求网页
headers={'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36'}
r=requests.get(url,headers=headers)

def gettitle(html):
    soup=BeautifulSoup(html,'html.parser')
    titles=[]
    briefs=[]
    # 请按下面的注释提示添加代码,完成相应功能
    ###### Begin ######
    # 1.先获取影片标题和链接,再由链接得到影片简介,最后将影片标题和简介分别存放在titles和briefs列表中
    datas = soup.find_all('a', {'class': 'nbg'})
    for item in datas:
        titles.append(item.get('title'))
        href = item.get('href')
        briefs.append(getdetail(href))
    return titles, briefs
    ####### End #######
    #先获取影片标题和链接,再由链接得到影片简介,最后将影片标题和简介加入到links列表中
    
def getdetail(href):
    # 请按下面的注释提示添加代码,完成相应功能
    ###### Begin ######
    # 2.由排行榜上的影片链接进入影片详情页面,获取影片简介并返回
    hrefs = requests.get(href, headers=headers)
    soups = BeautifulSoup(hrefs.text, 'html.parser')
    datas = soups.find('span', {'property': 'v:summary'}) 
    spans = datas.text.strip().replace(' ', '').replace('\n', '')  
    ####### End #######     

def savefile(titles,briefs,filename):  
    # 请按下面的注释提示添加代码,完成相应功能
    ###### Begin ######
    # 3.将影片标题和简介按指定格式保存到文本文件
    num = 1
    with open(filename, 'w') as f:
        for i, j in zip(titles, briefs):
            f.write("{:}>{}\n{}\n".format(num, titles, briefs))
            num = num + 1
    ####### End #######      
    
titles,briefs=gettitle(r.text)
savefile(titles,briefs,filename)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值