对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天在整理代码时,整理了一下之前自己学习爬虫的一些代码,今天先上一个简单的例子,手把手教你入门Python爬虫,爬取猫眼电影TOP100榜信息,将涉及到基础爬虫架构中的HTML下载器、HTML解析器、数据存储器三大模块。

step1:首先打开我们要爬取的网站url:http://maoyan.com/board/4;

step2:简单的分析一下网页的源代码,找到我们要爬取的相关信息,以及信息在html源码中的位置,确定我们的正则表达式;

step3:然后开始构造HTML下载器

def get_one_req(url):
    try:
        data=urllib.request.urlopen(url).read().decode('utf-8')
        return data
    except urllib.error.URLError as e:
        if hasattr(e,"code"):
            print(e.code)
        if hasattr(e,"reason"):
            print(e.reason)

step4:然后构造HTML解析器

def parse__one_html(data):
    pat='<p class="name"><a.*?data-val=.*?>(.*?)</a></p>.*?主演:(.*?)\s</p>.*?上映时间:(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(.*?)</i></p>'
    res=re.compile(pat,re.S).findall(data)
    return res

step5:数据存储

    df=open('F:/top100.txt','w',encoding='utf-8')
    for i in range(10):#设置要爬取的页数i
        url="http://maoyan.com/board/4?offset=0"+str(i*10)
        data=get_one_req(url)
        res=parse__one_html(data)
        for j in range(len(res)):
            item={
                    '编号':str(i)+str(j),
                    '名称':res[j][0],
                    '主演':res[j][1].strip(),#删除空字符
                    '上映时间':res[j][2],
                    '评分':res[j][3]+res[j][4]
                    }
            df.write(json.dumps(item,ensure_ascii=False)+'\n')#注意编码 

完整的代码如下:

import urllib.request
import re
import urllib.error
import json

url="http://maoyan.com/board/4?offset=0"
#模拟浏览器
headers=("user-agent","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.106 BIDUBrowser/8.7 Safari/537.36")
opener=urllib.request.build_opener()
opener.addheaders=[headers]#添加报头
urllib.request.install_opener(opener)#设置opner全局化,这样就可以直接调用urllib.request.urlopen()
#
def get_one_req(url):
    try:
        data=urllib.request.urlopen(url).read().decode('utf-8')
        return data
    except urllib.error.URLError as e:
        if hasattr(e,"code"):
            print(e.code)
        if hasattr(e,"reason"):
            print(e.reason)

def parse__one_html(data):
    pat='<p class="name"><a.*?data-val=.*?>(.*?)</a></p>.*?主演:(.*?)\s</p>.*?上映时间:(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(.*?)</i></p>'
    res=re.compile(pat,re.S).findall(data)
    return res

def main():
    df=open('F:/top100.txt','w',encoding='utf-8')
    for i in range(10):#设置要爬取的页数i
        url="http://maoyan.com/board/4?offset=0"+str(i*10)
        data=get_one_req(url)
        res=parse__one_html(data)
        for j in range(len(res)):
            item={
                    '编号':str(i)+str(j),
                    '名称':res[j][0],
                    '主演':res[j][1].strip(),#删除空字符
                    '上映时间':res[j][2],
                    '评分':res[j][3]+res[j][4]
                    }
            df.write(json.dumps(item,ensure_ascii=False)+'\n')#注意编码
            #df.close()
            #print('第'+str(i+1)+'页的内容是:',res)

if __name__ =='__main__':
    main()
        

最后保存的文件内容如下,大家也可以保存为.csv格式,这样比较方便后期的数据分析和处理。

{"第1页的内容是:名称": "霸王别姬", "主演": "张国荣,张丰毅,巩俐", "上映时间": "1993-01-01(中国香港)", "评分": "9.6"}
{"第1页的内容是:名称": "肖申克的救赎", "主演": "蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿", "上映时间": "1994-10-14(美国)", "评分": "9.5"}
{"第1页的内容是:名称": "罗马假日", "主演": "格利高利·派克,奥黛丽·赫本,埃迪·艾伯特", "上映时间": "1953-09-02(美国)", "评分": "9.1"}
{"第1页的内容是:名称": "这个杀手不太冷", "主演": "让·雷诺,加里·奥德曼,娜塔莉·波特曼", "上映时间": "1994-09-14(法国)", "评分": "9.5"}
{"第1页的内容是:名称": "泰坦尼克号", "主演": "莱昂纳多·迪卡普里奥,凯特·温丝莱特,比利·赞恩", "上映时间": "1998-04-03", "评分": "9.5"}
{"第1页的内容是:名称": "教父", "主演": "马龙·白兰度,阿尔·帕西诺,詹姆斯·凯恩", "上映时间": "1972-03-24(美国)", "评分": "9.3"}
{"第1页的内容是:名称": "龙猫", "主演": "日高法子,坂本千夏,糸井重里", "上映时间": "1988-04-16(日本)", "评分": "9.2"}
{"第1页的内容是:名称": "唐伯虎点秋香", "主演": "周星驰,巩俐,郑佩佩", "上映时间": "1993-07-01(中国香港)", "评分": "9.2"}
{"第1页的内容是:名称": "千与千寻", "主演": "柊瑠美,入野自由,夏木真理", "上映时间": "2001-07-20(日本)", "评分": "9.3"}
{"第1页的内容是:名称": "魂断蓝桥", "主演": "费雯·丽,罗伯特·泰勒,露塞尔·沃特森", "上映时间": "1940-05-17(美国)", "评分": "9.2"}
{"第2页的内容是:名称": "喜剧之王", "主演": "周星驰,莫文蔚,张柏芝", "上映时间": "1999-02-13(中国香港)", "评分": "9.2"}
{"第2页的内容是:名称": "乱世佳人", "主演": "费雯·丽,克拉克·盖博,奥利维娅·德哈维兰", "上映时间": "1939-12-15(美国)", "评分": "9.1"}
{"第2页的内容是:名称": "天空之城", "主演": "寺田农,鹫尾真知子,龟山助清", "上映时间": "1992", "评分": "9.1"}
{"第2页的内容是:名称": "大闹天宫", "主演": "邱岳峰,毕克,富润生", "上映时间": "1965-12-31", "评分": "9.0"}
{"第2页的内容是:名称": "辛德勒的名单", "主演": "连姆·尼森,拉尔夫·费因斯,本·金斯利", "上映时间": "1993-12-15(美国)", "评分": "9.2"}
{"第2页的内容是:名称": "音乐之声", "主演": "朱丽·安德鲁斯,克里斯托弗·普卢默,埃琳诺·帕克", "上映时间": "1965-03-02(美国)", "评分": "9.0"}
{"第2页的内容是:名称": "剪刀手爱德华", "主演": "约翰尼·德普,薇诺娜·瑞德,黛安娜·维斯特", "上映时间": "1990-12-06(美国)", "评分": "8.8"}
{"第2页的内容是:名称": "春光乍泄", "主演": "张国荣,梁朝伟,张震", "上映时间": "1997-05-30(中国香港)", "评分": "9.2"}
{"第2页的内容是:名称": "美丽人生", "主演": "罗伯托·贝尼尼,尼可莱塔·布拉斯基,乔治·坎塔里尼", "上映时间": "1997-12-20(意大利)", "评分": "9.3"}
{"第2页的内容是:名称": "黑客帝国", "主演": "基努·里维斯,凯瑞-安·莫斯,劳伦斯·菲什伯恩", "上映时间": "2000-01-14", "评分": "9.0"}
{"第3页的内容是:名称": "海上钢琴师", "主演": "蒂姆·罗斯,普路特·泰勒·文斯,比尔·努恩", "上映时间": "1998-10-28(意大利)", "评分": "9.2"}
{"第3页的内容是:名称": "指环王3:王者无敌", "主演": "伊利亚·伍德,伊恩·麦克莱恩,丽芙·泰勒", "上映时间": "2004-03-15", "评分": "9.2"}
{"第3页的内容是:名称": "加勒比海盗", "主演": "约翰尼·德普,凯拉·奈特莉,奥兰多·布鲁姆", "上映时间": "2003-11-21", "评分": "8.9"}
{"第3页的内容是:名称": "哈利·波特与魔法石", "主演": "丹尼尔·雷德克里夫,鲁伯特·格林特,艾玛·沃森", "上映时间": "2002-01-26", "评分": "9.1"}
{"第3页的内容是:名称": "射雕英雄传之东成西就", "主演": "张国荣,林青霞,梁朝伟", "上映时间": "1993-02-05(中国香港)", "评分": "8.9"}
{"第3页的内容是:名称": "无间道", "主演": "刘德华,梁朝伟,黄秋生", "上映时间": "2003-09-05", "评分": "9.1"}

爬虫的基本思路还是挺好理解的,希望大家一起交流学习。

爬虫系列(1)-----python爬取猫眼电影top100榜的更多相关文章

  1. python 爬取猫眼电影top100数据

    最近有爬虫相关的需求,所以上B站找了个视频(链接在文末)看了一下,做了一个小程序出来,大体上没有修改,只是在最后的存储上,由txt换成了excel. 简要需求:爬虫爬取 猫眼电影TOP100榜单 数据 ...

  2. # [爬虫Demo] pyquery+csv爬取猫眼电影top100

    目录 [爬虫Demo] pyquery+csv爬取猫眼电影top100 站点分析 代码君 [爬虫Demo] pyquery+csv爬取猫眼电影top100 站点分析 https://maoyan.co ...

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

    对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天,恋习Python的手把手系列,手把手教你入门Python爬虫,爬取猫眼电影TOP100榜信息,将涉及到基础爬虫 ...

  4. 40行代码爬取猫眼电影TOP100榜所有信息

    主要内容: 一.基础爬虫框架的三大模块 二.完整代码解析及效果展示 1️⃣  基础爬虫框架的三大模块 1.HTML下载器:利用requests模块下载HTML网页. 2.HTML解析器:利用re正则表 ...

  5. Python爬虫项目--爬取猫眼电影Top100榜

    本次抓取猫眼电影Top100榜所用到的知识点: 1. python requests库 2. 正则表达式 3. csv模块 4. 多进程 正文 目标站点分析 通过对目标站点的分析, 来确定网页结构,  ...

  6. Python爬取猫眼电影100榜并保存到excel表格

    首先我们前期要导入的第三方类库有; 通过猫眼电影100榜的源码可以看到很有规律 如: 亦或者是: 根据规律我们可以得到非贪婪的正则表达式 """<div class ...

  7. 爬虫练习之正则表达式爬取猫眼电影Top100

    #猫眼电影Top100import requests,re,timedef get_one_page(url): headers={ 'User-Agent':'Mozilla/5.0 (Window ...

  8. Requests+正则表达式爬取猫眼电影(TOP100榜)

    猫眼电影网址:www.maoyan.com 前言:网上一些大神已经对猫眼电影进行过爬取,所用的方法也是各有其优,最终目的是把影片排名.图片.名称.主要演员.上映时间与评分提取出来并保存到文件或者数据库 ...

  9. python爬取猫眼电影top100

    最近想研究下python爬虫,于是就找了些练习项目试试手,熟悉一下,猫眼电影可能就是那种最简单的了. 1 看下猫眼电影的top100页面 分了10页,url为:https://maoyan.com/b ...

随机推荐

  1. 从 HelloWorld 看 Java 字节码文件结构

    很多时候,我们都是从代码层面去学习如何编程,却很少去看看一个个 Java 代码背后到底是什么.今天就让我们从一个最简单的 Hello World 开始看一看 Java 的类文件结构. 在开始之前,我们 ...

  2. mysql大小写敏感问题

    问题: 在创建mysql表的时候发现不论表明是大写或小写,建完之后统一被变成了小写. 原因: MySQL在windows下是不区分大小写的,将script文件导入MySQL后表名也会自动转化为小写. ...

  3. Django---视图

    全过程:用户填写相关数据,提交相关请求,链接到对应的视图上,在此视图上(有用户传过来的数据[就是视图要处理的数据],在视图里面对数据进行业务处理,在数据库中crub数据,然后把对应的界面和界面显示需要 ...

  4. windows7+python2.7+setuptools 、pip+Django+PIL 网页制作环境配置

    1.安装Python2.7 官网下载安装包python-2.7.amd64,对应64位.安装时没什么特别操作,安装后将python的安装路径添加到系统变量path中,步骤为程序->计算机-> ...

  5. Git分支(2/5) -- Fast Forward 合并

    快捷操作: 切换并创建分支: git checkout -b 分支名. git checkout -b some-change 然后我打开某个文件(index.html)修改一下标题. Commit之 ...

  6. Filecoin挖矿进展

      预计Filecoin第一个版本发布最早在 2018.3月份(预计)   Protocol Labs这次ICO拿到了2.05亿美元,已经富得流油了,相信开发进度会快很多,Filecoin论文发表最早 ...

  7. springMVC正确使用GET POST PUT和DELETE方法,如何传递参数

    1. 向服务器请求数据:GET 这是标准的http的GET最擅长的, 应该使用GET请求,但是在使用时候我们会需要传递一个或多个参数给服务器, 这些出参数可能是基本数据类型页可能是对象,get方法可以 ...

  8. Python 中的登陆获取数据跳转页面(不含数据库)

    简单表单和模板: import os.path import tornado.httpserver import tornado.ioloop import tornado.options impor ...

  9. MYSQL数据库学习十二 使用MySQL运算符

    12.1 算术运算符 + - * /(DIV) %(MOD) 12.2 比较运算符 > < = <=> != <> >= <= BETWEEN AND ...

  10. Oracle/Hive/Impala SQL比较1

    5 Function      指数据库内置的function,不讨论UDF.另外,操作符都不比较了,区别不大.   5.1 数学函数 功能 Oracle Hive Impala ABS 绝对值,有 ...