目的:爬取猫眼电影榜单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相关推荐

  1. 利用python爬取猫眼电影榜单TOP100

    代码如下 import re import requests import json #from multiprocessing import Pool # 多进程#url = 'https://ma ...

  2. 使用PHP+QueryList 爬取猫眼电影榜单信息

    爬虫是我一直以来跃跃欲试的技术,现在的爬虫框架很多,比较流行的是基于python,nodejs,java,C#的的框架,其中又以基于python的爬虫流行最为广泛,还有的已经是一套傻瓜式的软件操作,如 ...

  3. Python全栈开发-Python爬虫-05 爬取猫眼电影榜单信息

    爬取猫眼电影榜单信息(翻页) 一. 获取url及headers 首先进入猫眼电影首页: 猫眼电影 之后点击菜单栏的 榜单 并在下面选择 TOP100榜 接着右击检查并刷新界面,在Network中找到4 ...

  4. 《崔庆才Python3网络爬虫开发实战教程》学习笔记(3):抓取猫眼电影榜单TOP100电影,并存入Excel表格

    本篇博文是自己在学习崔庆才的<Python3网络爬虫开发实战教程>的学习笔记系列,如果你也要这套视频教程的话,关注我公众号[小众技术],关注后回复[PYTHON],无套路免费送你一个学习大 ...

  5. 利用requests库和Xpath爬取猫眼电影榜单【Python】

    博主的前几篇有关定向网络爬虫的博客,在解析HTML界面时,都是运用了BeautifulSoup和re库进行解析,这篇博客写一下怎么用Xpath语法进行HTML界面解析,从而得到我们想要的结果. 说明 ...

  6. 【python爬虫自学笔记】-----爬取网易云歌单中歌曲歌词

    工具:python3.6 ,pycharm 个人歌单的链接地址为https://music.163.com/#/playlist?id=2251736705 开始对网页的内容进行爬取的时候,使用req ...

  7. Python爬取猫眼电影榜单评分,以及评论

    猫眼电影评论爬取 [目标] (1)爬取榜单电影名称以及评分,简单的数据可视化. (2)爬取< 你好,李焕英>的评论,用词云显示 第一步:了解反爬机制: 1.请求过多,ip地址会被封掉24h ...

  8. 【python爬虫自学笔记】-----爬取简书网站首页文章标题与链接

    from urllib import request from bs4 import BeautifulSoup #一个可以从html或者xml中提取结构化数据的python库 #构造头文件,模拟浏览 ...

  9. 正则爬取猫眼电影榜单信息

    预期效果 代码实现 import requests from requests.exceptions import RequestException import re import jsondef ...

最新文章

  1. NPM:Cannot read property 'pause' of undefined
  2. leetcode算法题--零钱兑换
  3. hiredis封装事务示例
  4. jquery源码中noConflict(防止$和jQuery的命名冲突)的实现原理
  5. NPOI “发现 中的部分内容有问题,是否要恢复此工作薄的内容?如果信任此工作薄的来源。。。”的问题的解决方法...
  6. uiautomatorviewer 查看元素新思路
  7. linux攻防比赛_LINUX 遭到SYN FLOOD攻击 LINUX下SYN攻防战
  8. manjaro设置字体_Manjaro安装配置美化字体模糊发虚解决记录
  9. 查看APK文件源代码
  10. VMware Workstation 英文改中文界面
  11. ORAN传输封装类型
  12. Office 2013
  13. 2020年数学建模国赛C题Demo【准确率只有61%,仅供参考】
  14. 计算机领域中的CAE,CAE
  15. ATF启动(一):整体启动流程
  16. 市盈率不足20倍 34只大盘蓝筹股尽显低估值效应
  17. 技术Leader的30个套路
  18. 基于 node.js 的校园交流平台的设计与实现(word文档)
  19. 数学建模(七) 元胞自动机
  20. 03.fourier transform(傅立叶变换)

热门文章

  1. 在UE4里制作3D UI(一)——使用LGUI插件
  2. J-LINK直接烧录.bin文件到开发板
  3. 极品家丁最新章节列表
  4. kali linux中如何安装中文输入法
  5. 19英寸机柜架尺寸表
  6. RoboMaster步兵机器人简介
  7. 【机械】基于简化几何解法的六轴机械臂位置规划附matlab代码
  8. 唯愿执笔诉心语,酿一季葡萄美酒
  9. opencv-python 轮廓查找 椭圆拟合 画椭圆
  10. Problem G: 货币兑换