【python爬虫自学笔记】(实战)----爬取猫眼电影榜单Top100
目的:爬取猫眼电影榜单TOP100的信息并保存在文档中。
查看网站结构,确定思路:
首先请求网页的地址为maoyan.com/board/4,电影信息的内容包含在一个个dd标签之中,分析dd标签中的内容,提取有用信息。
其中每个页面只能显示10个电影,若要爬取前100个,需要不断点击下一页,由url中的offset参数进行控制,如图所示,抓取一页内容后offset参数加10获取下一页内容,最终爬取100个电影的信息内容。
源代码如下:
import requests
import re
import json
from requests.exceptions import RequestException
from multiprocessing import Pool
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134'
}
#获取一页的内容
def get_one_page(url):try:response = requests.get(url,headers=headers)if response.status_code == 200:return response.textreturn Noneexcept RequestException:return None
#解析一页的内容
def parse_one_page(html):#定义正则表达式获取电影排名,图片地址,名称,主演,上映日期,评分等信息pattern = re.compile('<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?name"><a'+'.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>.*?'+'integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>',re.S)items = re.findall(pattern,html)print(items)#定义生成器for item in items:yield {'index':item[0],'image':item[1],'title':item[2],'star':item[3].strip()[3:], #去掉开头的换行符和内容的'主演:''releasetime':item[4].strip()[5:], #去掉换行符和内容的'上映日期:''score':item[5]+item[6] #评分的整数部分与小数部分相加}
#写入文件
def write_to_file(content):#确保写入文件中的中文内容能正确显示,使用encoding='utf-8'和ensure_ascii=False参数with open('result.txt','a',encoding='utf-8') as f: f.write(json.dumps(content,ensure_ascii=False)+'\n') #json.dumps()方法将字典形式的数据转换为字符串类型f.close()def main(offset):url = 'http://maoyan.com/board/4?offset='+str(offset) html = get_one_page(url)print(html)for item in parse_one_page(html):print(item)write_to_file(item)if __name__ == '__main__':#使用循环的方式进行页面的遍历# for i in range(10):# main(i*10)#使用多线程进行处理,爬取速度快pool = Pool()pool.map(main,[i*10 for i in range(10)])
其中html数据信息内容为:
<dd><i class="board-index board-index-11">11</i><a href="/films/7431" title="乱世佳人" class="image-link" data-act="boarditem-click" data-val="{movieId:7431}"><img src="//ms0.meituan.net/mywww/image/loading_2.e3d934bf.png" alt="" class="poster-default" /><img data-src="http://p0.meituan.net/movie/230e71d398e0c54730d58dc4bb6e4cca51662.jpg@160w_220h_1e_1c" alt="乱世佳人" class="board-img" /></a><div class="board-item-main"><div class="board-item-content"><div class="movie-item-info"><p class="name"><a href="/films/7431" title="乱世佳人" data-act="boarditem-click" data-val="{movieId:7431}">乱世佳人</a></p><p class="star">主演:费雯·丽,克拉克·盖博,奥利维娅·德哈维兰</p>
<p class="releasetime">上映时间:1939-12-15(美国)</p> </div><div class="movie-item-number score-num">
<p class="score"><i class="integer">9.</i><i class="fraction">1</i></p> </div></div></div></dd>
正则表达式解析后得到的结果为:
('21', 'http://p1.meituan.net/movie/d981a12f59d3cc92ff666094404ad8f0211220.jpg@160w_220h_1e_1c', '黑客帝国', '\n 主演:基努·里维斯,凯瑞-安·莫斯,劳伦斯·菲什伯恩\n ', '上映时间:2000-01-14', '9.', '0'), ('22', 'http://p0.meituan.net/movie/932bdfbef5be3543e6b136246aeb99b8123736.jpg@160w_220h_1e_1c', '指环王3:王者无敌', '\n 主演:伊莱贾·伍德,伊恩·麦克莱恩,丽芙·泰勒\n ', '上映时间:2004-03-15', '9.', '2'), ('23', 'http://p1.meituan.net/movie/b449893ebc63d5c54eb4a5b60341f334383831.jpg@160w_220h_1e_1c', '加勒比海盗', '\n 主演:约翰尼·德普,凯拉·奈特莉,奥兰多·布鲁姆\n ', '上映时间:2003-11-21', '8.', '9'), ('24', 'http://p1.meituan.net/movie/aacb9ed2a6601bfe515ef0970add1715623792.jpg@160w_220h_1e_1c', '哈利·波特与魔法石', '\n 主演:丹尼尔·雷德克里夫,鲁伯特·格林特,艾玛·沃森\n ', '上映时间:2002-01-26', '9.', '1'), ('25', 'http://p0.meituan.net/movie/d12a1c198ad9ffac72b5db57feacb449294699.jpg@160w_220h_1e_1c', '蝙蝠侠:黑暗骑士', '\n 主演:克里斯蒂安·贝尔,希斯·莱杰,艾伦·艾克哈特\n ', '上映时间:2008-07-18(美国)', '9.', '3'), ('26', 'http://p0.meituan.net/movie/8959888ee0c399b0fe53a714bc8a5a17460048.jpg@160w_220h_1e_1c', '楚门的世界', '\n 主演:金·凯瑞,劳拉·琳妮,诺亚·艾默里奇\n ', '上映时间:1998-06-01(美国)', '8.', '9'), ('27', 'http://p1.meituan.net/movie/53b6f0b66882a53b08896c92076515a8236400.jpg@160w_220h_1e_1c', '射雕英雄传之东成西就', '\n 主演:张国荣,梁朝伟,张学友\n ', '上映时间:1993-02-05(中国香港)', '8.', '9'), ('28', 'http://p1.meituan.net/movie/0d93b5b585ce29c6688e43f3989fb41f86421.jpg@160w_220h_1e_1c', '无间道', '\n 主演:刘德华,梁朝伟,黄秋生\n ', '上映时间:2003-09-05', '9.', '1'), ('29', 'http://p1.meituan.net/movie/7bac8bfa6739c18620065132ce9c64fa85110.jpg@160w_220h_1e_1c', '教父2', '\n 主演:阿尔·帕西诺,罗伯特·德尼罗,黛安·基顿\n ', '上映时间:1974-12-12(美国)', '9.', '0'), ('30', 'http://p0.meituan.net/movie/5cfa597a98b35ee4ee598695942641ba287922.jpg@160w_220h_1e_1c', '指环王2:双塔奇兵', '\n 主演:伊莱贾·伍德,伊恩·麦克莱恩,丽芙·泰勒\n ', '上映时间:2003-04-25', '9.', '1')]
进行数据提取后得到的结果为;
{'index': '21', 'image': 'http://p1.meituan.net/movie/d981a12f59d3cc92ff666094404ad8f0211220.jpg@160w_220h_1e_1c', 'title': '黑客帝国', 'star': '基努·里维斯,凯瑞-安·莫斯,劳伦斯·菲什伯恩', 'releasetime': '2000-01-14', 'score': '9.0'}
{'index': '22', 'image': 'http://p0.meituan.net/movie/932bdfbef5be3543e6b136246aeb99b8123736.jpg@160w_220h_1e_1c', 'title': '指环王3:王者无敌', 'star': '伊莱贾·伍德,伊恩·麦克莱恩,丽芙·泰勒', 'releasetime': '2004-03-15', 'score': '9.2'}
{'index': '23', 'image': 'http://p1.meituan.net/movie/b449893ebc63d5c54eb4a5b60341f334383831.jpg@160w_220h_1e_1c', 'title': '加勒比海盗', 'star': '约翰尼·德普,凯拉·奈特莉,奥兰多·布鲁姆', 'releasetime': '2003-11-21', 'score': '8.9'}
{'index': '24', 'image': 'http://p1.meituan.net/movie/aacb9ed2a6601bfe515ef0970add1715623792.jpg@160w_220h_1e_1c', 'title': '哈利·波特与魔法石', 'star': '丹尼尔·雷德克里夫,鲁伯特·格林特,艾玛·沃森', 'releasetime': '2002-01-26', 'score': '9.1'}
{'index': '25', 'image': 'http://p0.meituan.net/movie/d12a1c198ad9ffac72b5db57feacb449294699.jpg@160w_220h_1e_1c', 'title': '蝙蝠侠:黑暗骑士', 'star': '克里斯蒂安·贝尔,希斯·莱杰,艾伦·艾克哈特', 'releasetime': '2008-07-18(美国)', 'score': '9.3'}
{'index': '26', 'image': 'http://p0.meituan.net/movie/8959888ee0c399b0fe53a714bc8a5a17460048.jpg@160w_220h_1e_1c', 'title': '楚门的世界', 'star': '金·凯瑞,劳拉·琳妮,诺亚·艾默里奇', 'releasetime': '1998-06-01(美国)', 'score': '8.9'}
{'index': '27', 'image': 'http://p1.meituan.net/movie/53b6f0b66882a53b08896c92076515a8236400.jpg@160w_220h_1e_1c', 'title': '射雕英雄传之东成西就', 'star': '张国荣,梁朝伟,张学友', 'releasetime': '1993-02-05(中国香港)', 'score': '8.9'}
{'index': '28', 'image': 'http://p1.meituan.net/movie/0d93b5b585ce29c6688e43f3989fb41f86421.jpg@160w_220h_1e_1c', 'title': '无间道', 'star': '刘德华,梁朝伟,黄秋生', 'releasetime': '2003-09-05', 'score': '9.1'}
{'index': '29', 'image': 'http://p1.meituan.net/movie/7bac8bfa6739c18620065132ce9c64fa85110.jpg@160w_220h_1e_1c', 'title': '教父2', 'star': '阿尔·帕西诺,罗伯特·德尼罗,黛安·基顿', 'releasetime': '1974-12-12(美国)', 'score': '9.0'}
{'index': '30', 'image': 'http://p0.meituan.net/movie/5cfa597a98b35ee4ee598695942641ba287922.jpg@160w_220h_1e_1c', 'title': '指环王2:双塔奇兵', 'star': '伊莱贾·伍德,伊恩·麦克莱恩,丽芙·泰勒', 'releasetime': '2003-04-25', 'score': '9.1'}
【python爬虫自学笔记】(实战)----爬取猫眼电影榜单Top100相关推荐
- 利用python爬取猫眼电影榜单TOP100
代码如下 import re import requests import json #from multiprocessing import Pool # 多进程#url = 'https://ma ...
- 使用PHP+QueryList 爬取猫眼电影榜单信息
爬虫是我一直以来跃跃欲试的技术,现在的爬虫框架很多,比较流行的是基于python,nodejs,java,C#的的框架,其中又以基于python的爬虫流行最为广泛,还有的已经是一套傻瓜式的软件操作,如 ...
- Python全栈开发-Python爬虫-05 爬取猫眼电影榜单信息
爬取猫眼电影榜单信息(翻页) 一. 获取url及headers 首先进入猫眼电影首页: 猫眼电影 之后点击菜单栏的 榜单 并在下面选择 TOP100榜 接着右击检查并刷新界面,在Network中找到4 ...
- 《崔庆才Python3网络爬虫开发实战教程》学习笔记(3):抓取猫眼电影榜单TOP100电影,并存入Excel表格
本篇博文是自己在学习崔庆才的<Python3网络爬虫开发实战教程>的学习笔记系列,如果你也要这套视频教程的话,关注我公众号[小众技术],关注后回复[PYTHON],无套路免费送你一个学习大 ...
- 利用requests库和Xpath爬取猫眼电影榜单【Python】
博主的前几篇有关定向网络爬虫的博客,在解析HTML界面时,都是运用了BeautifulSoup和re库进行解析,这篇博客写一下怎么用Xpath语法进行HTML界面解析,从而得到我们想要的结果. 说明 ...
- 【python爬虫自学笔记】-----爬取网易云歌单中歌曲歌词
工具:python3.6 ,pycharm 个人歌单的链接地址为https://music.163.com/#/playlist?id=2251736705 开始对网页的内容进行爬取的时候,使用req ...
- Python爬取猫眼电影榜单评分,以及评论
猫眼电影评论爬取 [目标] (1)爬取榜单电影名称以及评分,简单的数据可视化. (2)爬取< 你好,李焕英>的评论,用词云显示 第一步:了解反爬机制: 1.请求过多,ip地址会被封掉24h ...
- 【python爬虫自学笔记】-----爬取简书网站首页文章标题与链接
from urllib import request from bs4 import BeautifulSoup #一个可以从html或者xml中提取结构化数据的python库 #构造头文件,模拟浏览 ...
- 正则爬取猫眼电影榜单信息
预期效果 代码实现 import requests from requests.exceptions import RequestException import re import jsondef ...
最新文章
- NPM:Cannot read property 'pause' of undefined
- leetcode算法题--零钱兑换
- hiredis封装事务示例
- jquery源码中noConflict(防止$和jQuery的命名冲突)的实现原理
- NPOI “发现 中的部分内容有问题,是否要恢复此工作薄的内容?如果信任此工作薄的来源。。。”的问题的解决方法...
- uiautomatorviewer 查看元素新思路
- linux攻防比赛_LINUX 遭到SYN FLOOD攻击 LINUX下SYN攻防战
- manjaro设置字体_Manjaro安装配置美化字体模糊发虚解决记录
- 查看APK文件源代码
- VMware Workstation 英文改中文界面
- ORAN传输封装类型
- Office 2013
- 2020年数学建模国赛C题Demo【准确率只有61%,仅供参考】
- 计算机领域中的CAE,CAE
- ATF启动(一):整体启动流程
- 市盈率不足20倍 34只大盘蓝筹股尽显低估值效应
- 技术Leader的30个套路
- 基于 node.js 的校园交流平台的设计与实现(word文档)
- 数学建模(七) 元胞自动机
- 03.fourier transform(傅立叶变换)