猫眼电影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. 实现结果


Python爬取猫眼电影TOP100

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

Python爬虫之三:抓取猫眼电影TOP100

今天我要利用request库和正则表达式抓取猫眼电影Top100榜单。 运行平台: Windows Python版本: Python3.6 IDE: Sublime Text 其他工...
  • yaoyefengchen
  • yaoyefengchen
  • 2018-01-10 17:01:36
  • 388

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

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

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

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

爬取猫眼电影榜单Top100

废话不多说,直接上代码import json import requests from requests.exceptions import RequestException import redef...
  • Qaz_wz
  • Qaz_wz
  • 2017-04-05 16:49:54
  • 1883

python 爬虫项目-爬取猫眼top100电影

通过自己实践,完成了一个简单的爬取项目,爬取项目猫眼top100排名的电影信息 将创建的代码上传到了github上,供搭建参考,和指出错误,谢谢 https://github.com/Guazhe...
  • qq_21334991
  • qq_21334991
  • 2018-02-04 23:05:44
  • 248

python抓取猫眼电影top100

这里主要运用到了正则表达式进行抓取;import json from multiprocessing import Pool import requests from requests.excepti...
  • qq_27492735
  • qq_27492735
  • 2017-10-29 12:38:39
  • 245

python 爬虫抓取猫眼电影 top100 源码

python 爬虫抓取网页源码
  • douguangyao
  • douguangyao
  • 2017-09-10 20:20:58
  • 1708

50 行代码教你爬取猫眼电影 TOP100 榜所有信息

点击上方“程序人生”,选择“置顶公众号”第一时间关注程序猿(媛)身边的故事图片源自:《Arrival》对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天,恋习Py...
  • csdnsevenn
  • csdnsevenn
  • 2018-04-08 00:00:00
  • 3229

【爬虫】爬取猫眼电影top100

正则表达式、mysql、csv、txt
  • sisteryaya
  • sisteryaya
  • 2017-09-08 22:07:22
  • 671
收藏助手
不良信息举报
您举报文章:猫眼电影TOP100爬取
举报原因:
原因补充:

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