猫眼电影TOP100爬取

翻译 2017年10月10日 15:46:12

1.  项目环境

              (1)  win7
         (2)  python 3.5
         (3)  pycharm

2. 完整代码

# -*- coding: utf-8 -*-
import requests
import re
import csv
from requests.exceptions import RequestException


# 请求一个页面返回响应内容
def get_one_page(url, offset):
    try:
        response = requests.get(url=url,params={'offset':offset})
        if response.status_code == 200:
            return response.text
        else:
            return None
    except RequestException as e:
        return None


# 解析一个页面
def parse_one_page(html):
    pattern = '<dd>.*?board-index.*?">(\d+)</i>.*?data-src="(.*?)".*?/>.*?movie-item-info.*?title="(.*?)".*?star">'+\
          '(.*?)</p>.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(\d+)</i>.*?</dd>'
    # re.S匹配多行
    regex = re.compile(pattern,re.S)
    items = regex.findall(html)
    for item in items:
         yield {
             'index':item[0],
             'thumb':get_large_thumb(item[1]),
             'title':item[2],
             'actors':item[3].strip()[3:],
             'release_time':get_release_time(item[4].strip()[5:]),
             'area':get_release_area(item[4].strip()[5:]),
             'score':item[5]+item[6]
        }


# 获取上映时间
def get_release_time(data):
    pattern = '^(.*?)(\(|$)'
    regex = re.compile(pattern)
    w = regex.search(data)
    return  w.group(1)


# 获取上映地区
def get_release_area(data):
    pattern = '.*\((.*)\)'
    regex = re.compile(pattern)
    w = regex.search(data)
    if w is None:
        return '未知'
    return w.group(1)


# 获取封面大图
def get_large_thumb(url):
    pattern = '(.*?)@.*?'
    regex = re.compile(pattern)
    w = regex.search(url)
    return w.group(1)


# 存储数据
def store_data(item):
    with open('movie.csv','a',newline='',encoding='utf-8') as data_csv:
        # dialect为打开csv文件的方式,默认是excel,delimiter="\t"参数指写入的时候的分隔符
        try:
            csv_writer = csv.writer(data_csv)
            csv_writer.writerow([item['index'], item['thumb'], item['title'], item['actors'],item['release_time'],item['area'],item['score']])
        except Exception as e:
            print(e)
            print(item)


# 下载封面图
def download_thumb(title,url):
    try:
        response = requests.get(url=url)
        # 获取二进制数据
        with open('thumb/'+title+'.jpg', 'wb') as f:
            f.write(response.content)
            f.close()
    except RequestException as e:
        print(e)
        pass


# 主调度程序
def main():
    # 起始URL
    start_url = 'http://maoyan.com/board/4'
    for i in range(0,100,10):
        # 获取响应文本内容
        html = get_one_page(url=start_url, offset=i)
        if html is None:
            print('链接:%s?offset=%s异常'.format(start_url,i))
            continue
        for item in parse_one_page(html=html):
            store_data(item)
            download_thumb(item['title'],item['thumb'])


if __name__=='__main__':
    main()

3. 实现结果


【3月24日】Requests+正则表达式抓取猫眼电影Top100

本次实验爬虫任务工具较为简单,主要是熟悉正则表达式的匹配:pattern = re.compile('.*?board-index.*?>(\d+).*?data-src="(.*?)".*?name...
  • Moon_treee
  • Moon_treee
  • 2017年03月24日 22:48
  • 1178

Python爬虫-爬取猫眼电影Top100榜单

猫眼电影的网站html组成十分简单。 地址就是很简单的offset=x 这个x参数更改即可翻页。 下面的信息使用正则表达式很快就可以得出结果。 直接放代码:import json impo...
  • gx864102252
  • gx864102252
  • 2017年06月23日 07:44
  • 859

猫眼电影 票房爬取

前段时间看到了一篇文章: 《反击爬虫,前端工程师的脑洞可以有多大?》 当中介绍了几个前端反扒的思路。感觉挺有意思的。 这篇文章是记录自己动手爬取天猫票房时遇到的问题 网上已经有朋友介绍...
  • FengHuaJianShi
  • FengHuaJianShi
  • 2017年10月31日 15:44
  • 521

三种方法抓取猫眼电影top100信息

分别使用BeautifulSoup,xpath,和正则表达式提取猫眼电影top100的信息。程序很简单,就不解释了,直接上程序吧。...
  • ilove_itachi
  • ilove_itachi
  • 2017年07月25日 11:46
  • 556

Python爬取猫眼电影TOP100

ps:初学爬虫,跟着催庆才的爬虫案例实战写的! 视频网址:https://edu.hellobi.com/course/156/ 1,首先导入相应的模块: import re impor...
  • qq_34731703
  • qq_34731703
  • 2017年11月15日 14:09
  • 146

爬取猫眼top100电影并存储在mysql中

爬取猫眼top100电影,存储在Mysql中
  • zhaotun123
  • zhaotun123
  • 2017年12月21日 22:13
  • 67

爬取猫眼top100电影并存储在本地csv文件中

猫眼电影 TOP100爬虫程序
  • zhaotun123
  • zhaotun123
  • 2017年12月16日 22:34
  • 79

高仿猫眼电影Logo图标

上面是原图,下面是代码实现的高仿。 源码如下: package com.lingyun.loaddemo; import android.content.Context; import andr...
  • tabolt
  • tabolt
  • 2016年07月01日 16:00
  • 881

Python学习记录-爬取猫眼电影top100榜单

安装pycharm-爬取网页内容 在网易云课堂中找到的学习视频,很适合入门级别开发者 http://study.163.com/course/courseLearn.htm?courseId=10...
  • Julse
  • Julse
  • 2018年01月13日 00:52
  • 35

利用Scrapy爬取1905电影网

本文将从以下几个方面讲解Scrapy爬虫的基本操作 Scrapy爬虫介绍 Scrapy安装 Scrapy实例——爬取1905电影网 相关资料 Scrapy 爬虫介绍Scrapy是Python开发的一个...
  • wds2006sdo
  • wds2006sdo
  • 2016年04月21日 17:15
  • 142301
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:猫眼电影TOP100爬取
举报原因:
原因补充:

(最多只允许输入30个字)