爬虫系列(1)-----python爬取猫眼电影top100榜
对于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榜的更多相关文章
- python 爬取猫眼电影top100数据
最近有爬虫相关的需求,所以上B站找了个视频(链接在文末)看了一下,做了一个小程序出来,大体上没有修改,只是在最后的存储上,由txt换成了excel. 简要需求:爬虫爬取 猫眼电影TOP100榜单 数据 ...
- # [爬虫Demo] pyquery+csv爬取猫眼电影top100
目录 [爬虫Demo] pyquery+csv爬取猫眼电影top100 站点分析 代码君 [爬虫Demo] pyquery+csv爬取猫眼电影top100 站点分析 https://maoyan.co ...
- 50 行代码教你爬取猫眼电影 TOP100 榜所有信息
对于Python初学者来说,爬虫技能是应该是最好入门,也是最能够有让自己有成就感的,今天,恋习Python的手把手系列,手把手教你入门Python爬虫,爬取猫眼电影TOP100榜信息,将涉及到基础爬虫 ...
- 40行代码爬取猫眼电影TOP100榜所有信息
主要内容: 一.基础爬虫框架的三大模块 二.完整代码解析及效果展示 1️⃣ 基础爬虫框架的三大模块 1.HTML下载器:利用requests模块下载HTML网页. 2.HTML解析器:利用re正则表 ...
- Python爬虫项目--爬取猫眼电影Top100榜
本次抓取猫眼电影Top100榜所用到的知识点: 1. python requests库 2. 正则表达式 3. csv模块 4. 多进程 正文 目标站点分析 通过对目标站点的分析, 来确定网页结构, ...
- Python爬取猫眼电影100榜并保存到excel表格
首先我们前期要导入的第三方类库有; 通过猫眼电影100榜的源码可以看到很有规律 如: 亦或者是: 根据规律我们可以得到非贪婪的正则表达式 """<div class ...
- 爬虫练习之正则表达式爬取猫眼电影Top100
#猫眼电影Top100import requests,re,timedef get_one_page(url): headers={ 'User-Agent':'Mozilla/5.0 (Window ...
- Requests+正则表达式爬取猫眼电影(TOP100榜)
猫眼电影网址:www.maoyan.com 前言:网上一些大神已经对猫眼电影进行过爬取,所用的方法也是各有其优,最终目的是把影片排名.图片.名称.主要演员.上映时间与评分提取出来并保存到文件或者数据库 ...
- python爬取猫眼电影top100
最近想研究下python爬虫,于是就找了些练习项目试试手,熟悉一下,猫眼电影可能就是那种最简单的了. 1 看下猫眼电影的top100页面 分了10页,url为:https://maoyan.com/b ...
随机推荐
- CLOB型转成字符型
//oracle.sql.Clob类型转换成String类型 public static String ClobToString(Clob clob) { String reString = &quo ...
- onmouse事件
常用的鼠标事件:onmouseenter,onmouseleave,onmouseover,onmouseout,onmouseup,onmousedown,onmousewheel,onmousem ...
- Python爬虫获取异步加载站点pexels并下载图片(Python爬虫实战3)
1. 异步加载爬虫 对于静态页面爬虫很容易获取到站点的数据内容,然而静态页面需要全量加载站点的所有数据,对于网站的访问和带宽是巨大的挑战,对于高并发和大访问访问量的站点来说,需要使用AJAX相关的技术 ...
- [转][RabbitMQ+Python入门经典] 兔子和兔子窝
[转][RabbitMQ+Python入门经典] 兔子和兔子窝 http://blog.csdn.net/linvo/article/details/5750987 RabbitMQ作为一个工业级的消 ...
- EasyUI Parser 解析器
Parser(解析器)应用场景 1,自动调用parser 只要我们书写相应的class,easyui就能成功的渲染页面,这是因为解析器在默认情况下,会在dom加载完成的时候($(docunment). ...
- Kon-boot v2.5介绍与使用方法总结(支持win10)
Kon-boot这个工具相信大家都不陌生,这是一款专门针对Windows.Linux.MAC登陆密码破解工具,他能绕过系统所设有的登陆密码,让你的登陆畅通无阻.KON-Boot的原理是在于处理BIOS ...
- Wp-UserAgent——让WordPress在评论后面加上浏览器和操作系统信息
在很多的博客网站都看到过在评论的后面显示了浏览器和操作系统的信息,网上也用过一些插件,但是都不是很好看,有一次在一个网页上看见了这个评论后面不仅显示了浏览器和操作系统的图片,还有文字信息, 感觉不错, ...
- Mac环境下使用VSCode搭建Go开发环境
换新工作啦!!!开心一下.到了新公司一看,乖乖,全MAC办公,让我这只用过windows的土包子怎么活,而且公司的人都好高冷,于是自己摸索着搭建go语言开发环境了. go语言的ide挺多的,JetBr ...
- SpringtMVC中配置 <mvc:annotation-driven/> 与 <mvc:default-servlet-handler/> 的作用与源码解析
基于 Spring4.X 来学习 SpringtMVC, 在学习过程中,被"告知"在 XML 配置文件中建议设置如下两项: 一直不明白为什么,但又甘心.于是,花了一点时间来调试源码 ...
- 20165226 预备作业3 Linux安装及学习
20165226 预备作业3 Linux安装及学习 Linux安装 一.下载安装VirtualBox 1.首先在官网下载,点开基于VirtualBox虚拟机安装Ubuntu图文教程 找到版本进行下载安 ...