前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 爬取猫眼电影最受期待榜

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

作者头像
希希里之海
发布2018-05-16 15:26:31
7560
发布2018-05-16 15:26:31
举报
文章被收录于专栏:weixuqin 的专栏weixuqin 的专栏

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

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

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

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

     4.定义主函数;

     5.使用多进程爬取。

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

代码语言:javascript
复制
import requests
import re
import  json
from multiprocessing import Pool
from requests.exceptions import RequestException

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

代码语言:javascript
复制
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 生成器对解析的代码进行排布,转换为字典形式:

代码语言:javascript
复制
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 页:

代码语言:javascript
复制
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() 方法进行多进程爬取,提高爬取效率:

代码语言:javascript
复制
if __name__ == "__main__":
    pool = Pool()
    pool.map(main, [i*10 for i in range(10)])

爬取的部分数据如下:

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-08-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档