python爬虫--爬取-猫眼电影-代码

import re
import requests
class Mao():
    def __call__(self, *args, **kwargs):
        """
        当前类的对象当做函数使用的时候触发
        """
        self.run()
    def run(self):
        #获取,猫眼HTML
        base_url="https://maoyan.com/board"
        response=requests.get(base_url)
        html=response.text
        # print(html)
        self.get_data(html)
    def get_data(self,html):
        #缩小范围,获取dd的信息
        #换行不能用.*?    re.S可以使\n转换为普通字符。.*?就可以匹配到\n
        dd_list=re.findall('<dd>([\s\S]*?)</dd>',html)
        print(dd_list[0])
        #循环获取dd中的电影信息
        for dd in dd_list:
            # print(dd)
            #获取排名
            rank=re.findall('<i class="board-index board-index-\d+">(\d+)</i>',dd)[0]
            # print(rank)
            #获取电影名称
            name=re.findall('title="(.*?)" class="image-link"',dd)[0]
            # print(name)
            #获取主演信息:
            actor=re.findall('<p class="star">([\d\D]*?)</p>',dd)[0]
            if "主演" not in actor:
                actor=''
            else:
                #去掉两边的空格
                actor=actor.strip()
            # print(actor)
            #获取上映日期
            publish_data=re.findall('<p class="releasetime">上映时间:(.*?)</p>',dd)[0]
            # print(publish_data)
            #评分信息
            score_match=re.search('<p class="score"><i class="integer">(.*?)</i><i class="fraction">(\d)</i></p>',dd)
            score=score_match.group(1)+score_match.group(2)
            # print(score)
            #获取图片信息,浏览器获取到的信息和代码获取到的信息有时候不一样
            #以代码获取到的为准。在获取图片的过程当中,优先获取大图
            picture=re.findall('data-src="(.*?)@160w_220h_1e_1c"',dd)[0]
            # print(picture)

            #将电影信息存入字典中
            movie_dict={
                "rank":rank,
                "name":name,
                "actor":actor,
                "publish_data":publish_data,
                "score":score,
                "picture":picture,
            }
            print(movie_dict)
if __name__ == '__main__':
    mao=Mao()
    mao()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值