zoukankan      html  css  js  c++  java
  • python爬虫之豆瓣网及作业

    
    

    1.豆瓣电影排行榜TOP25

    '''
    主页:
        https://movie.douban.com/top250
        GET
        User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36
        re正则:
        如何书写正则表达式,根据.*?一直匹配到自己想要查找的内容,中间的内容就过滤
        在此需要找到固定标识,再通过(.*?)提取到自己想要的内容
        <div class="item">.*?href="(.*?)">.*?src="(.*?)">.*?<span class="title">(.*?)</span>.*?<span class="rating.num".*?>(.*?)</span>.*?<span>(.*?)人评价
        <div class="item">.*?href="(.*?)">.*?src="(.*?)">.*?<span class="title">(.*?)</span>.*? <p class="">导演:(.*?).*?主演:(.*?).*?...(.*?)/.*?/(.*?)</p>.*?<span class="rating.num".*?>(.*?)</span>.*?<span>(.*?)人评价
            <div class="item">
                    <div class="pic">
                        <em class="">2</em>
                        <a href="https://movie.douban.com/subject/1291546/">
                            <img width="100" alt="霸王别姬" src="https://img3.doubanio.com/view/photo/s_ratio_poster/public/p1910813120.webp" class="">
                        </a>
                    </div>
                    <div class="info">
                        <div class="hd">
                            <a href="https://movie.douban.com/subject/1291546/" class="">
                                <span class="title">霸王别姬</span>
                                    <span class="other">&nbsp;/&nbsp;再见,我的妾  /  Farewell My Concubine</span>
                            </a>
    
    
                                <span class="playable">[可播放]</span>
                        </div>
                        <div class="bd">
                            <p class="">
                                导演: 陈凯歌 Kaige Chen&nbsp;&nbsp;&nbsp;主演: 张国荣 Leslie Cheung / 张丰毅 Fengyi Zha...<br>
                                1993&nbsp;/&nbsp;中国大陆 香港&nbsp;/&nbsp;剧情 爱情 同性
                            </p>
    
    
                            <div class="star">
                                    <span class="rating5-t"></span>
                                    <span class="rating_num" property="v:average">9.6</span>
                                    <span property="v:best" content="10.0"></span>
                                    <span>1074955人评价</span>
                            </div>
    
                                <p class="quote">
                                    <span class="inq">风华绝代。</span>
                                </p>
                        </div>
                    </div>
                </div>
    '''
    
    import requests
    import  re
    url='https://movie.douban.com/top250'
    headers={
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.90 Safari/537.36'
    }
    # 1.向豆瓣top250发送请求获取响应数据
    response=requests.get(url,headers=headers)
    # 2.通过正则提取数据
    # 需要提取的数据为:电影详情页url,图片链接,电影名称,电影评分,评价人数
    movie_content_list=re.findall(' <div class="item">.*?href="(.*?)">.*?src="(.*?)">.*?<span class="title">(.*?)</span>.*?<span class="rating.num".*?>(.*?)</span>.*?<span>(.*?)人评价',response.text,re.S)
    # 解析文本 response.text
    # 匹配模式 re.S
    # 4.使用元组解压赋值每一部电影
    for movie_content in movie_content_list:
        detail_url,movie_jpg,name,point,num=movie_content  # 逐个取出列表中获取的电影数据,因为取出的是元组模式,所以将其中的内容对应赋值给每一个变量 detail_url,movie_jpg,name,num=movie_content
        data=f'电影名称:{name},详情页:{detail_url},图片url:{movie_jpg},评分:{point},评价人数:{num}
    '
        print(data)
    # 5.保存数据,把电影信息写入文件中
    with open('爬取豆瓣的前25部电影.txt','a',encoding='utf-8')as f:
        f.write(data)
    # 找到每一页的规律
    # 爬取豆瓣的250部电影
    # 提取画框信息

     3.更新的作业爬取豆瓣top250,已通过验证

    ''''''
    '''
    爬取豆瓣TOP250电影信息
    
    主页:
        第一页:
            https://movie.douban.com/top250?start=0&filter=
        第二页:
            https://movie.douban.com/top250?start=25&filter=
        第三页:
            https://movie.douban.com/top250?start=50&filter=
        第四页:
            https://movie.douban.com/top250?start=75&filter=
        第十页:
            https://movie.douban.com/top250?start=225&filter=
            
        GET
        User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36
    
    re正则:
        # 电影详情页url、图片链接、电影名称、导演、主演、电影上映时间、电影评分、评价人数、简介
       <div class="item">.*?href="(.*?)">.*?src="(.*?)" class="">.*?<span class="title">(.*?)</span>.*?<div class="bd">.*?导演:(.*?)<br>(.*?)</p>.*?<span class="rating_num".*?>(.*?)</span>.*?<span>(.*?)人评价.*?<span class="inq">(.*?)</span>
    '''
    import requests
    import re
    
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.146 Safari/537.36'
    }
    base_url = 'https://movie.douban.com/top250?start={}&filter='
    
    n = 0
    for line in range(10):
        url = base_url.format(n)
        print(type(n))
        n += 25
        print(url)
    
        # 1、往豆瓣TOP250发送请求获取响应数据
        response = requests.get(url, headers=headers)
    
        # print(response.text)
    
        # 2、通过正则解析提取数据
        # 电影详情页url、图片链接、电影名称、电影评分、评价人数
        movie_content_list = re.findall(
            # 正则规则
            # '<div class="item">.*?href="(.*?)">.*?src="(.*?)".*?<span class="title">(.*?)</span>.*?<span class="rating_num".*?>(.*?)</span>.*?<span>(.*?)人评价',
            '<div class="item">.*?href="(.*?)">.*?src="(.*?)" class="">.*?<span class="title">(.*?)</span>.*?<div class="bd">.*?导演:(.*?)<br>(.*?)</p>.*?<span class="rating_num".*?>(.*?)</span>.*?<span>(.*?)人评价.*?<span class="inq">(.*?)</span>',
    
            # 解析文本
            response.text,
    
            # 匹配模式
            re.S)
    
        for movie_content in movie_content_list:
            # 解压赋值每一部电影
            detail_url, movie_jpg, name, daoyan, timer,point, num,  desc= movie_content
            data = f'电影名称:{name},   详情页url:{detail_url}, 图片url:{movie_jpg}, 导演: {daoyan} 上映时间: {timer}评分: {point}, 评价人数: {num} 简介:{desc}
    '
            print(data)
    
            # 3、保存数据,把电影信息写入文件中
            with open('douban.txt', 'a', encoding='utf-8') as f:
                f.write(data)
  • 相关阅读:
    连接Excel文件时,未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
    C# 中LinkLabel的简单使用
    体验安装金蝶K/3 Wise 13.0(图像)
    VS2008让自己掌控的定义编译项目后,自己主动添加到工具箱
    哥哥牟:由于道路的明星莫属,它救了我的女儿!
    【SSH之旅】一步学习的步Struts1相框(三):分析控制Struts1示例
    Ubuntu14.04 工作区设置
    Android定调的发展
    Spark1.0.0 学习路径
    oracle 11g 基于磁盘的备份rman duplicate
  • 原文地址:https://www.cnblogs.com/lhhhha/p/11033090.html
Copyright © 2011-2022 走看看