python爬虫基础案例(面向对象)——爬取猫眼电影并保存数据到excel

https://blog.csdn.net/knighthood2001/article/details/119919615?spm=1001.2014.3001.5501

在上篇文章中,运用的是面向过程思想,即分析出解决问题所需要的步骤,然后按照步骤一步一步的通过代码解决问题;

这篇文章运用的是面向对象思想,即把构成问题的解决方案分解成一个一个对象,通过对象来描述解决问题的步骤中的行为。

不多说,上才艺(代码)

注:--init--用来数据属性的初始化工作,也可以认为是对实例的构造方法,即接受类的实例self并对其进行构造

import requests
from lxml import etree
import pandas as pd
class MaoYan:
    def __init__(self):
        self.base_url = 'https://maoyan.com/board/4?offset={}'
        self.headers = {
            'Referer': 'https://maoyan.com/board/4?requestCode=e83854272b2bff27fb25137346aeb714bbj90&offset=10',
            'Cookie': '__mta=247404475.1629885283786.1629887482215.1629893884124.8; uuid_n_v=v1; uuid=7868E9D0058A11ECAEE0416AA74DE6B1A0A2AC49E1604153A8082BAC6B403331; _csrf=0032460ef4cb4cbc03a01838a3100aeb3daef130e0ac4b0cd03e52ab9ff596fb; Hm_lvt_703e94591e87be68cc8da0da7cbd0be2=1628220737,1628236529,1628653354,1629885284; _lxsdk_cuid=17a469fab1dc8-04e619bda8b373-3f356b-144000-17a469fab1dc8; _lxsdk=7868E9D0058A11ECAEE0416AA74DE6B1A0A2AC49E1604153A8082BAC6B403331; Hm_lpvt_703e94591e87be68cc8da0da7cbd0be2=1629893884; _lxsdk_s=17b7d3ef5ea-f43-47d-9b1%7C%7C3',
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.70 Safari/537.36'
        }
        self.df = []
        self.columns = ['排名', '片名', '主演', '上映时间', '评分']
    # 包含提取、解析数据,存储数据
    def parse(self):
        for i in range(10):
            url = self.base_url.format(str(i * 10))
            response = requests.get(url, headers=self.headers)
            print(response.text)
            html = response.text
            xp = etree.HTML(html)
            # print(xp)
            lis = xp.xpath('//*[@id="app"]/div/div/div[1]')
            # print(lis)
            for li in lis:
                for n in range(0, 10):
                    paiming = li.xpath('//*[@id="app"]/div/div/div[1]/dl/dd/i/text()')[n]
                    pianming = li.xpath('//*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[1]/p[1]/a/text()')[n]
                    zhuyan = li.xpath('//*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[1]/p[2]/text()')[n].strip().replace("主演:", "")
                    shijian = li.xpath('//*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[1]/p[3]/text()')[n].replace("上映时间:", "")
                    # 由于评分被拆成了两个i节点,所有要分别获取并进行拼接
                    score1 = li.xpath('//*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[2]/p/i[1]/text()')[n]
                    score2 = li.xpath('//*[@id="app"]/div/div/div[1]/dl/dd/div/div/div[2]/p/i[2]/text()')[n]
                    score = score1 + score2
                    # return [paiming, pianming, zhuyan, shijian, score]
                    b = self.df.append([paiming, pianming, zhuyan, shijian, score])
                    # dataframe是二维数组,columns将上面的标题行插入到二维数组中
                    d = pd.DataFrame(self.df, columns=self.columns)
                    # index=False表示输出不显示索引值
                    d.to_excel("猫眼电影1.xlsx", index=False)

if __name__ == '__main__':
    maoyan = MaoYan()
    maoyan.parse()

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

knighthood2001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值