用Python爬虫来看看最近都上映了哪些电影

发表于:2020-9-18 10:44

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:佚名    来源:Python编程

  前言
  猫眼电影是淘宝联合打造电影分类最全的电影的平台,能够第一时间告知用户,最新的电影上线时间。今天教大家获取猫眼电影的即将上映的电影详情。
  项目目标
  获取猫眼电影的即将上映的电影详情。
  项目准备
  软件:PyCharm
  需要的库:requests、lxml、random、time
  插件:Xpath
  网站如下:
  https://maoyan.com/films?showType=2&offset={} 
  点击下一页的按钮,观察到网站的变化分别如下:
  https://maoyan.com/films?showType=2&offset=30  
  https://maoyan.com/films?showType=2&offset=60  
  https://maoyan.com/films?showType=2&offset=90
  点击下一页时,页面每增加一页offset=()每次增加30,所以可以用{}代替变换的变量,再用for循环遍历这网址,实现多个网址请求。
  项目实现
  1、定义一个class类继承object,定义init方法继承self,主函数main继承self。导入需要的库和网址,代码如下所示。
  import requests  
  from lxml import etree  
  import time  
  import random  
  class MaoyanSpider(object):  
      def __init__(self):  
        self.url = "https://maoyan.com/films?showType=2&offset={}"  
      def main(self):  
          pass  
  if __name__ == '__main__':  
      spider = MaoyanSpider()  
      spider.main() 
  2、随机产生UserAgent。
  for i in range(1, 50):  
     # ua.random,一定要写在这里,每次请求都会随机选择。  
         self.headers = { 
              'User-Agent': ua.random,  
         } 
  3、发送请求,获取页面响应。
  def get_page(self, url):  
    # random.choice一定要写在这里,每次请求都会随机选择  
    res = requests.get(url, headers=self.headers)  
    res.encoding = 'utf-8' 
    html = res.text  
    self.parse_page(html) 
  4、xpath解析一级页面数据,获取页面信息。
  1)基准xpath节点对象列表。
  #  创建解析对象  
  parse_html = etree.HTML(html)  
  # 基准xpath节点对象列表  
  dd_list = parse_html.xpath('//dl[@class="movie-list"]//dd') 
  2)依次遍历每个节点对象,提取数据。
  for dd in dd_list:  
     name = dd.xpath('.//div[@class="movie-hover-title"]//span[@class="name noscore"]/text()')[0].strip()  
     star = dd.xpath('.//div[@class="movie-hover-info"]//div[@class="movie-hover-title"][3]/text()')[1].strip()  
     type = dd.xpath('.//div[@class="movie-hover-info"]//div[@class="movie-hover-title"][2]/text()')[1].strip()  
     dowld=dd.xpath('.//div[@class="movie-item-hover"]/a/@href')[0].strip()  
     # print(movie_dict)  
     movie = '''【即将上映】
  5、定义movie,保存打印数据。
   movie = '''【即将上映】         
   电影名字: %s  
  主演:%s  
  类型:%s  
  详情链接:https://maoyan.com%s  
  =========================================================  
                                     ''' % (name, star, type,dowld)  
  print( movie) 
  6、random.randint()方法,设置时间延时。
  time.sleep(random.randint(1, 3))
  7、调用方法,实现功能。
  html = self.get_page(url)  
  self.parse_page(html)
  效果展示
  1、点击绿色小三角运行输入起始页,终止页。
  2、运行程序后,结果显示在控制台,如下图所示。
  3、点击蓝色下载链接, 网络查看详情。
  小结
  1、不建议抓取太多数据,容易对服务器造成负载,浅尝辄止即可。
  2、本文基于Python网络爬虫,利用爬虫库,实现爬取猫眼电影。
  3、欢迎大家积极尝试,有时候看到别人实现起来很简单,但是到自己动手实现的时候,总会有各种各样的问题,切勿眼高手低,勤动手,才可以理解的更加深刻。

  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号