使用python爬取猫眼电影、房王、股吧论坛、百度翻译、有道翻译、高德天气、华夏基金、扇贝单词、糗事百科(猫眼电影)

本文介绍了如何使用Python进行网络爬虫,通过实例展示了如何爬取猫眼电影的相关信息。代码中利用requests和re库,实现数据的抓取和解析。文章末尾还提供了简单的类定义,用于初始化爬虫并执行爬取任务。
摘要由CSDN通过智能技术生成

import requests
import re

class Mao:
def init(self):
‘’’
本质是初始化一些条件,并不是调用其他函数
当前类实例化的时候触发
‘’’
self.count = 1
self.spider_name = “万能爬虫”
# self.run()

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
    # 换行不能用.*? 要是用\s\S   re.S 可以是\n 换行变为普通字符 .就可以匹配到\n
    dd_list = re.findall('<dd>.*?</dd>', html, re.S)
    # print(dd_list)
    # print(dd_list[0])
    # print(len(dd_list))
    # import json
    # print(json.dumps(dd_list))

    # 循环获取dd中的电影信息
    for dd in dd_list:
        # print(dd)

        # 获取排名
        rank = re.findall('<i class="board-index board-index-\d{1,2}">(\d+)</i>', dd)[0]
        # print(rank)

        # 获取电影名称
        name = re.findall('title="(.*?)" class', 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_date = re.findall('<p class="releasetime">上映时间:(.*?)</p>', dd)[0]
        # print(publish_date)

        # 评分信息
        score_match = re.search('<p class="score"><i class="integer">(.*?)</i><i class="fraction">(\d)</i></p>', dd)
        # print(score.group(1))
        # print(score.group(2))
        score = score_match.group(1) + score_match.group(2)
        # print(score)

        # 获取图片
        # 浏览器获取到的信息 和代码获取到的信息 有时候不一样
        # 写正则表达式的时候 以代码获取到的字符串 为准
        # 在获取图片的过程当中 优先获取大图
        pic = re.findall('data-src="(.*?)@160w_220h_1e_1c"', dd)[0]
        # print(pic)

        # 将电影信息 存入字典中
        movie_dict = {
            "rank": rank,
            "name": name,
            "actor": actor,
            "publish_date": publish_date,
            "score": score,
            "pic": pic
        }

        print(movie_dict)

if name == ‘main’:
mao = Mao()
mao()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值