• Python爬取猫眼电影100榜并保存到excel表格


    首先我们前期要导入的第三方类库有;

     通过猫眼电影100榜的源码可以看到很有规律 如:

    亦或者是:

     根据规律我们可以得到非贪婪的正则表达式

    """<div class="movie-item-info">.*?title="(.*?)".*?class="star">(.*?)</p>.*?releasetime">(.*?)</p>"""

    之后我们观察网页地址(url)的变化规律:

    这是第一页的网址: https://maoyan.com/board/4?offset=0

    这是第二页的网址: https://maoyan.com/board/4?offset=10

    这是第三页的网址: https://maoyan.com/board/4?offset=20

    可以见的网页变化规律为:(当前页数-1)*10   即为:(N-1)*10

    之后下面进行爬取

     1 from urllib import request
     2 import random
     3 import time
     4 import csv
     5 import re
     6 import xlwt
     7 
     8 class catEyesMovie:
     9 
    10     def __init__(self):
    11         self.url = 'https://maoyan.com/board/4?offset={}'
    12         self.ua_list = [
    13             'Win7:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'
    14         ]
    15         self.line = 1;
    16             #'User-Agent': 'Win7:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1'
    17 
    18 
    19     #获取网页内容
    20     def get_page(self,url):
    21         #使用随机的user-agent
    22         headers = {'User-Agent':random.choice(self.ua_list)}
    23         #创建请求对象
    24         req = request.Request(url=url,headers=headers)
    25         #发送请求
    26         res = request.urlopen(req)
    27         #获取相应对象
    28         html = res.read().decode('utf-8','ignore')
    29         return html
    30 
    31     #清洗数据
    32     def clean_page(self,html,xwlt):
    33         pattern = re.compile("""<div class="movie-item-info">.*?title="(.*?)".*?class="star">(.*?)</p>.*?releasetime">(.*?)</p>""", re.S)
    34         r_list = pattern.findall(html)
    35         self.write_page(r_list,xwlt)
    36 
    37 
    38     #保存内容
    39     def write_page(self,r_list,xwlt):
    40         one_film_dict = {}
    41         for rt in r_list:
    42             xwlt.write(self.line,0,rt[0].strip())
    43             xwlt.write(self.line,1,rt[1].strip())
    44             xwlt.write(self.line,2,rt[2].strip())
    45             self.line+=1
    46 
    47 
    48 
    49     def main(self,xwlt):
    50         #凭借字符串
    51         res = []
    52         for i in range(1,11):
    53             #拼接url地址 https://maoyan.com/board/4?offset={}
    54             #获取当前页数
    55             offset = (i-1)*10
    56             url = self.url.format(offset)
    57             html = self.get_page(url)
    58             self.clean_page(html,xwlt)
    59 
    60 
    61 
    62 
    63 
    64 if __name__ == '__main__':
    65     start = time.time()
    66     spider = catEyesMovie()
    67     #创建一个xlwt对象
    68     book = xlwt.Workbook(encoding='utf-8')
    69     #创建sheet,Sheet1为表的名字,cell_overwirite_ok为是否覆盖单元格
    70     sheet1 = book.add_sheet(u'Sheet1',cell_overwrite_ok=True)
    71     #进行第一行标题定义
    72     sheet1.write(0,0,'电影名称')
    73     sheet1.write(0,1,'主演')
    74     sheet1.write(0,2,'上映时间')
    75     #进行爬取
    76     spider.main(sheet1)
    77     book.save('D:\write.xls')
    78     end = time.time()
    79     print('执行时间为: %.2f' % (end-start))

    每次爬取到的数据结构为:

    1 {'电影名称': '速度与激情5', '主演': '速度与激情5', '上映时间': '速度与激情5'}
    2 {'电影名称': '驯龙高手', '主演': '驯龙高手', '上映时间': '驯龙高手'}
    3 {'电影名称': '勇敢的心', '主演': '勇敢的心', '上映时间': '勇敢的心'}
    4 {'电影名称': '闻香识女人', '主演': '闻香识女人', '上映时间': '闻香识女人'}
    5 {'电影名称': '神偷奶爸', '主演': '神偷奶爸', '上映时间': '神偷奶爸'}

    完成后的excel表格如下:

            仅供学习!!

  • 相关阅读:
    rabbitmq fanout模式(发布订阅)
    rabbitmq php 限流
    rabbitmq 延迟队列 php
    rabbitmq 死信队列 php
    php rabbitmq发送消息并判断消息是否发送成功 ack comfirm机制
    php使用activemq
    golang 冒泡排序实现
    依耐项属性- 在需要使用的情况下添加
    Path 详解 之WPF
    WPF FrameWorkElement->UIElement->Visual
  • 原文地址:https://www.cnblogs.com/gongdada/p/11718473.html
Copyright © 2020-2023  润新知