专栏首页weixuqin 的专栏Python 爬取猫眼电影最受期待榜

Python 爬取猫眼电影最受期待榜

    主要爬取猫眼电影最受期待榜的电影排名、图片链接、名称、主演、上映时间。

  思路:1.定义一个获取网页源代码的函数;

     2.定义一个解析网页源代码的函数;

     3.定义一个将解析的数据保存为本地文件的函数;

     4.定义主函数;

     5.使用多进程爬取。

步骤一:首先,导入相关的库:

import requests
import re
import  json
from multiprocessing import Pool
from requests.exceptions import RequestException

步骤二:定义获取网页源代码的函数,这里使用 requests.get() 方法来获取,并调用异常处理方法:

def get_one_page(url):
    response = requests.get(url)
    try:
        if response.status_code == 200:
            return response.text
        return None
    except RequestException:
        return None

步骤三:定义一个函数,利用正则表达式 re.findall() 等函数解析网页源代码,并利用 yield 生成器对解析的代码进行排布,转换为字典形式:

def parse_one_page(html):
    pattern = re.compile('<dd>.*?board-index.*?">(\d+)</i>.*?data-src="(.*?)".*?</a>.*?'
                         + '<a.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?</dd>', re.S)
    items = re.findall(pattern, html)
    for item in items:
        yield {
            '排名': item[0],
            '图片': item[1],
            '名称': item[2],
            '主演': item[3].strip()[3:],
            '上映时间': item[4].strip()[5:]
        }

步骤四:定义主函数,爬取最受期待榜的 n 页:

def main(offset):
    url = 'https://maoyan.com/board/6?offset=' +str(offset)
    html = get_one_page(url)
    for item in parse_one_page(html):
        print(item)
        write_one_page(item)

步骤五:多进程爬取,定义进程池,并调用 Pool.map() 方法进行多进程爬取,提高爬取效率:

if __name__ == "__main__":
    pool = Pool()
    pool.map(main, [i*10 for i in range(10)])

爬取的部分数据如下:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Spring 的属性注入

    希希里之海
  • Django 项目重命名

      在日常学习工作过程中,我们难免需要复用以前的项目,这里讲下复用 Django 项目并重命名的过程。

    希希里之海
  • redis 学习(14)-- HyperLogLog

    HyperLogLog 是基于 HyperLogLog 算法的一种数据结构,该算法可以在极小空间完成独立数量统计。

    希希里之海
  • JavaMelody监控SQL

    前言 前面讲过了Javamelody的基本配置,这里简单的介绍下,如何使用Javamelody来监控JDBC以及SQL。   在网上搜索很多资料,仅有开源...

    用户1154259
  • 冰火两重天,百度痛失大将的第二天腾讯招来了AI专家张潼 | 大数据24小时

    数据猿导读 创新不够,颜色来凑,苹果新品掀“红色”热潮;人工智能专家张潼博士加盟腾讯,出任AI Lab主任一职;专注布局住房金融市场,大道金服获2亿元融资……以...

    数据猿
  • Ubnt UniFi 产品开箱

    家里的无线网络覆盖一直有些问题,虽然说已经在家里部署了两个无线AP,但是还是一些小问题,首先信号覆盖还是有一些死角,比如说,卫生间,一进卫生间,信号强度瞬间掉到...

    Allen Cheng
  • SSM项目搭建之druid 原

    1) 可以监控数据库访问性能,Druid内置提供了一个功能强大的StatFilter插件,能够详细统计SQL的执行性能,这对于线上分析数据库访问性能有帮助。 

    尚浩宇
  • WLAN产品形态之分层架构

    随着移动互联网时代的来临,无线数据流量呈现爆发式增长,各大运营商也越来越多依靠WLAN来承载这些无线数据流量,大规模进行WLAN网络建设,分担3G网络的压力,让...

    SDNLAB
  • 快速集成 Flyway、MyBatis、MyBatis-Generator、H2

    导读:如何快速集成 Flyway,MyBatis,MyBatis-Generator,H2? 优质教程请关注微信公众号“Web项目聚集地”

    用户1093975
  • MapReduce的jobHistory介绍

    接下来小菌将分享如何在CDH集群环境下开启jobHistory服务。(不清楚集群环境搭建的小伙伴们可以参考小菌之前的博客哦(Hadoop(CDH...

    公众号-猿人菌

扫码关注云+社区

领取腾讯云代金券