python基础项目--爬取猫眼TOP榜前一百条数据

该博客详细介绍了如何使用Python爬虫技术抓取猫眼电影首页的TOP榜前一百条数据。首先分析了页面结构,发现分页通过offset参数实现,每个页面显示10部电影。然后,博主描述了如何访问网站获取页面源码,解析数据,并循环爬取多个页面,最后将抓取到的数据存储到本地文件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主要步骤有:

访问网站,获取页面源码
解析页面,得到想要的数据
循环爬取多个页面
把数据写入本地文件

分析需要爬取的页面结构

访问猫眼电影。观察页面,会看到首页上有排名前十的电影信息。
找到页面中的分页,点击不同的页码。对比不同页面url的差别,会发现不同的分页是以offset参数作为区分的。
因为每个页面都显示10条电影信息,所以offset是以10作为偏移量的。

标题抓取首页

import re,json

import requests
def write_to_json(infos):
    with open('movie.json','w',encoding='utf-8') as fp :
        json.dump(infos,fp)
#解析页面内容
def parse_page(html_str):
    #测试页面内容是否能拿到
    # print(html_str)
    #正则筛选页面的原则:一步步缩小匹配范围。
    dl_p = re.compile(r'<dl class="board-wrapper">(.*?)</dl>',re.S)
    dl_content = dl_p.search(html_str).group()
    dd_p = re.compile(r'<dd>(.*?)</dd>',re.S)
    dd_list = dd_p.findall(dl_content)
    # print(dd_list)
    '''
    电影名称
    主演
    上映时间
    评分
    详情url
   
    '''
    for dd in dd_list:
        name_p = re.compile(r'" title="(.*?)" class="',re.S)###电影名称
        name = name_p.search(dd).group(1)
        # print(name)
        actor_p = re.compile(r'<p class="star">(.*?)</p>',re.S)###主演
        actor = actor_p.search(dd).group(1).strip()
        # print(actor)
        time_p = re.compile(r'<p class="releasetime">(.*?)</p>',re.S)###上映时间
        time = time_p.search(dd).group(1).strip()
        # print(time)
        # score_p = re.compile(r'<p class="score"><i class="integer">(.*?).</i><i class="fraction">(.*?)</i></p>')
        score_p = re.compile(r'.*?integer">(.*?)</i>')###评分
        score = score_p.search(dd).group(1).strip()

        url_p = re.compile(r'.*?data-src="(.*?)"')###详情url
        url = url_p.search(dd).group(0)
        #设置爬取数据
        item = {}
        item['name'] =name
        item['actor'] = actor
        item['time'] = time
        item['score'] = score
        item['url'] = url
        print(item)
        infos.append(item)
        #保存到json文件

def main():
    #确定基础url
    base_url = 'https://maoyan.com/board/4?offset=%s'
    headers= {
        'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36',

    }
    for i in range(10):
        # print(base_url %i*10)
        response = requests.get(base_url %(i*10),headers=headers)
        parse_page(response.text)
if __name__ == '__main__':
    # infos = []
    # main()#提取数据,将数据添加到infos中
    #将数据写入文件
    # write_to_json(infos)
    #从movie.json文件中读出电影数据

    infos = json.load(open('movie.json','r'))
    for item in infos:
        print(item)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值