python学习-获取时光网电影TOP100电影信息
2019-01-09 23:17
435 查看
一、知识点
1、通过requests.get获取页面html代码
2、通过lxml的etree模块配合xpath方法获取需要的内容
3、json文件的加载和提取相关内容
4、其它:for语句、字符串截取、元祖的使用等
二、代码
在经过一段时间学习python的基本知识,同时也照葫芦画瓢了一段时间后,编写了下面的python程序,实现对时光网电影TOP100的电影信息进行提取。
#-*- coding=utf-8 -*- import requests import time import json from lxml import etree #获取页面的html并返回etree def get_html_tree(url,headers): resp = requests.get(url,headers=headers).text resp_tree = etree.HTML(resp) return resp_tree #获取初始页的电影链接 def get_movie_link(resp_tree): links = resp_tree.xpath('//div[@class="mov_con"]//h2/a/@href') return links #对每个电影页面进行解析 def parse_page(movie_tree,movie_id): #从json中获取电影评分 surl = 'http://service.library.mtime.com/Movie.api?Ajax_CallBack=true&Ajax_CallBackType=Mtime.Library.Services&Ajax_CallBackMethod=GetMovieOverviewRating&Ajax_CrossDomain=1&Ajax_RequestUrl=http%3A%2F%2Fmovie.mtime.com%2F'+movie_id+'%2F&Ajax_CallBackArgument0='+movie_id sresp = requests.get(surl,headers=headers) b = sresp.text.find('MovieId') e = sresp.text.find('IP":0') sjson = json.loads(sresp.text[b-2:e+6]) s = sjson['RatingFinal'] #获取电影名称,年份和内容简介 name = movie_tree.xpath('//div[@class="db_head"]//h1/text()') year = movie_tree.xpath('//div[@class="db_head"]//p/a/text()') content = movie_tree.xpath('//*[@id="movie_warp"]//dl/dt/p[1]/text()') return name,s,year,content #获取下一页的链接 def get_page_links(resp_tree): all_page_links = resp_tree.xpath('//*[@id="PageNavigator"]/a/@href') return all_page_links def main(): global headers url = 'http://www.mtime.com/top/movie/top100/' headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36'} top = 1 for page in range(2,12): resp_tree = get_html_tree(url,headers) links = get_movie_link(resp_tree) for link in links: movie_tree = get_html_tree(link,headers) movie_id = str(link)[23:-1] movie=parse_page(movie_tree,movie_id) print('%d:' %top, '电影名称:%s' %movie[0]) print('评分:%s' %movie[1]) print('年代:%s' %movie[2]) print('内容介绍:%s' %movie[3]) top += 1 url = 'http://www.mtime.com/top/movie/top100/index-%d.html' %page if __name__ == '__main__': main()
运行结果:
1: 电影名称:['肖申克的救赎'] 评分:9.2 年代:['1994'] 内容介绍:['银行家安迪因被陷害杀害妻子与她的情夫,被判两个终身监禁。入狱后,影片便以黑人狱友瑞德冷静的旁白来推进。监狱数十年如一日的改造会使原本自由的心灵习惯了牢笼的禁锢,而这也将是安迪的命运?', '全球各地的新一代电影人也都在逐步扬名,中国的第五代导演走上了历史舞台,日本的黑泽明大师虽然步..'] 2: 电影名称:['盗梦空间'] 评分:9.1 年代:['2010'] 内容介绍:['多姆·柯布能够潜入人们的梦境中,窃取潜意识中有价值的秘密,这也使他成为了一名国际逃犯。为了重回原本的生活,柯布和他的团队接受了一项任务,这次不是窃取思想,而是植入思想。如果他们成功,这就是一次完美犯罪。', '在《盗梦空间》中扮演小李子岳父的演员迈克尔·凯恩近日揭开了结尾的谜底,或许你早已经猜出来了,..'] 3: 电影名称:['阿甘正传'] 评分:9.1 年代:['1994'] 内容介绍:['阿甘的智商只有75,但凭借跑步的天赋,他顺利大学毕业。在越南战场,他结识了“捕虾迷”布巴和丹中尉。回国后,阿甘机缘巧合累积了大量资产。不过,钱并不是阿甘所看重的东西。阿甘和珍妮青梅竹马,可珍妮有自己的梦想……', '在距离《阿甘正传》问世20多年后,2D蓝光版首次引进中国大陆,并由泰盛文化发行。']
三、总结
虽然对于python的知识点已经看了很多遍,但是在真正编写程序时发现自己还是有很多不懂的地方。比如电影的评分,直接通过html代码无法获得,需要通过json的url获得相关的代码,再从中提取电影评分。虽然代码还存在很多不完善的地方,这只是一个开端,继续努力学习,希望能够尽早掌握python的编程。
在写这个代码期间,看了很多文章,感谢大家的分享!
相关文章推荐
- Python实战:Python爬虫学习教程,获取电影排行榜
- Dive Into Python 学习记录3-对获取某文件夹下MP3文件信息的代码构成分析
- 初学Python的学习笔记9----面向对象编程(获取对象信息、实例属性和类属性)、面向对象高级编程(使用__slots__、使用@property)
- Python爬虫(三):爬取猫眼电影网经典电影TOP100信息并存入本地Markdown文件(上)
- 【Python学习笔记】面向对象编程:获取对象信息
- Python的学习(十九)--获取网页信息(一)
- 【Python】学习笔记——-7.4、获取对象信息
- python 学习笔记 12 -- 写一个脚本获取城市天气信息
- Python爬虫学习---------根据分类爬取豆瓣电影的电影信息
- 如何用Python在豆瓣中获取自己喜欢的TOP N电影信息
- python 学习笔记 12 -- 写一个脚本获取城市天气信息
- python 爬虫学习三(Scrapy 实战,豆瓣爬取电影信息)
- Python学习笔记15:标准库之获取进程信息(os包)
- python学习4:获取豆瓣上映电影数据
- python自动化运维学习------使用模块psutil获取系统cpu、内存、磁盘、网络、进程等信息
- python3实现抓取猫眼top100电影信息
- Python获取最新电影的信息
- python实现根据用户输入从电影网站获取影片信息的方法
- python学习——获取对象信息
- Python学习:使用boost c++嵌入python,获取异常信息输出到字符串