python3 爬取猫眼电影Top100信息(正则+requests)
import json
from multiprocessing.dummy import Pool
import requests
import redef get_one_page(url):# 要加上这个请求头,假装自己是浏览器,不然猫眼不给你访问headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.119 Safari/537.36'}# 加上浏览器头请求页面respone = requests.get(url,headers=headers)# 返回文本return respone.textdef parse_one_page(html):# 正则的匹配模式pattern = re.compile('<dd>.*?board-index.*?>(.*?)<.*?title="(.*?)".*?star">(.*?)</p>''.*?releasetime">(.*?)</p>.*?integer">(.*?)</i>.*?fraction">(.*?)''</i>.*?</dd>',re.S)# 找到所有匹配内容放到表里result = re.findall(pattern,html)# 有了yield,可以理解为这个函数不再是函数,而是一个生成器,可以直接调用结果# 生成器里面的内容是一个字典for item in result:yield {'index':item[0],'title':item[1].strip(' ').strip('\n').strip(' '),'actor':item[2].strip(' ').strip('\n').strip(' '),'time':item[3],'score':item[4]+item[5]}def write_to_file(content):# a是追加,教程里习惯手动关闭文件,我觉得是不需要with open('./output.txt','a',encoding='utf-8') as output_file: # 文件打开方式为utf-8# 需要借助json才能把字典dict写入文件output_file.write(json.dumps(content,ensure_ascii=False)+'\n') # 不给你用ascii# 这里如果不做编码处理,输出文件会有很多\u9b42\u65ad\u84dd\u6865类似的utf-8码def read_from_file(file):data = []with open(file,'r',encoding='utf-8') as lines:# result = dict(line for line in lines if line)for line in lines:try:data.append(json.loads(line.rstrip('\n').replace('\'','\"')))except:print('something wrong')return datadef main(offset):'''调用各个函数'''url = 'http://maoyan.com/board/4?offset=%d' % offsethtml = get_one_page(url)result = parse_one_page(html)for item in result:# 把生成器里面的字典写入文件write_to_file(item)
if __name__ == '__main__':# 找齐Top100,需要翻页,串行版本,inidex顺序不会乱。# for i in range(10):# main(i*10)# map,把数组中的每一个元素拿出来当作参数,多线程并行版本pool = Pool()# 虽然是并行的,但是index顺序是错乱的pool.map(main,[i*10 for i in range(10)])# 再写一个读取output,打印的# 因为上面的池导致写文件可能因为资源争用会发生部分错误,有时候能运行有时候不能data = read_from_file('./output.txt')print(data)
输出结果:
{"index": "21", "title": "海上钢琴师", "actor": "主演:蒂姆·罗斯,普路特·泰勒·文斯,比尔·努恩", "time": "上映时间:1998-10-28(意大利)", "score": "9.2"} {"index": "22", "title": "指环王3:王者无敌", "actor": "主演:伊利亚·伍德,伊恩·麦克莱恩,丽芙·泰勒", "time": "上映时间:2004-03-15", "score": "9.2"} {"index": "2", "title": "肖申克的救赎", "actor": "主演:蒂姆·罗宾斯,摩根·弗里曼,鲍勃·冈顿", "time": "上映时间:1994-10-14(美国)", "score": "9.5"} {"index": "11", "title": "喜剧之王", "actor": "主演:周星驰,莫文蔚,张柏芝", "time": "上映时间:1999-02-13(中国香港)", "score": "9.2"} {"index": "12", "title": "乱世佳人", "actor": "主演:费雯·丽,克拉克·盖博,奥利维娅·德哈维兰", "time": "上映时间:1939-12-15(美国)", "score": "9.1"}
.
.
.
{"index": "97", "title": "我爱你", "actor": "主演:宋在河,李顺才,尹秀晶", "time": "上映时间:2011-02-17(韩国)", "score": "9.0"} {"index": "98", "title": "黄金三镖客", "actor": "主演:克林特·伊斯特伍德,李·范·克里夫,伊莱·瓦拉赫", "time": "上映时间:1966-12-23(意大利)", "score": "8.9"} {"index": "99", "title": "迁徙的鸟", "actor": "主演:雅克·贝汉,菲利普·拉波洛", "time": "上映时间:2001-12-12(法国)", "score": "9.1"} {"index": "100", "title": "英雄本色", "actor": "主演:狄龙,张国荣,周润发", "time": "上映时间:2017-11-17", "score": "9.2"}
python3 爬取猫眼电影Top100信息(正则+requests)相关推荐
- 利用正则表达式爬取猫眼电影TOP100信息
本文利用requests库和正则表达式爬取了猫眼电影TOP100电影信息,并将电影封面和标题.主演等文字信息保存在了本地.本文完整代码链接:https://github.com/iapcoder/Ma ...
- (爬取猫眼电影TOP100的电影信息(含图片、评分等))
爬取猫眼电影TOP100的电影信息(含图片.评分等) 让我们直接进入正题 1.导入需要的库 2.获取页面 3.分析页面 4.保存文件 全部代码 让我们直接进入正题 对猫眼电影的网站进行分析 其链接为: ...
- 爬取猫眼电影TOP100榜单
爬取猫眼电影Top100榜单 分析网页 内容提取 前提:会基础的python3以及requests库,正则等. 分析网页 top100榜单网址为https://maoyan.com/board/4,通 ...
- 爬虫从头学之Requests+正则表达式爬取猫眼电影top100
爬取思路 当我们想要爬取一个页面的时候,我们要保证思路清晰,爬虫的思路分四个步骤,发起请求,获取响应内容,解析内容,存储内容.根据这四个内容我们的思路就很清晰.以下为具体步骤 使用requests库爬 ...
- python爬取猫眼_python正则表达式爬取猫眼电影top100
用正则表达式爬取猫眼电影top100,具体内容如下 #!/usr/bin/python # -*- coding: utf-8 -*- import json # 快速导入此模块:鼠标先点到要导入的函 ...
- 猫眼html源码,50 行代码教你爬取猫眼电影 TOP100 榜所有信息
点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 今天,手把手教你入门 Python 爬虫,爬取猫眼电影 TOP100 榜信息. 作者 | 丁 ...
- 50 行代码教你爬取猫眼电影 TOP100 榜所有信息
点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 今天,手把手教你入门 Python 爬虫,爬取猫眼电影 TOP100 榜信息. 作者 | 丁 ...
- python爬虫入门练习:BeautifulSoup爬取猫眼电影TOP100排行榜,pandas保存本地excel文件
传送门:[python爬虫入门练习]正则表达式爬取猫眼电影TOP100排行榜,openpyxl保存本地excel文件 对于上文使用的正则表达式匹配网页内容,的确是有些许麻烦,替换出现任何的差错都会导致 ...
- Python爬取猫眼电影TOP100榜
Python爬取猫眼电影TOP100榜 兴趣点: 这个没什么特别的兴趣,只是单纯爬猫眼练手的人太多了,所以我也打算加入他们,对猫眼员工说一声不好意思了,哈哈哈! 爬取网址: 传送门:https://m ...
最新文章
- daemon函数的原理及使用详解
- ASP.net mvc Code First 更新数据库
- jmeter之-用Firefox录制https协议证书问题
- 泛型指针,原生指针和智能指针
- 使用命令修改注册表键值及权限
- python拉格朗日插值法_Python 实现拉格朗日插值
- Win7安装驱动提示“无法验驱动程序数字签名”怎么办?
- 输入一个整数求其各位数字的平方和c语言,C++程式输入一个长整数,求各位数字的平方和...
- 【Linux应用层】防火墙iptables命令
- 短信接入程序,短信接入平台,彩信接入程序,移动短信接入软件,移动彩信接入平台模块
- Apache Project LIst 所有项目介绍
- 树莓派的Python成功解决TypeError: Image data cannot be converted to float
- memory exhausted mysql 42000 1064
- stm32闪存的理解
- 微信公众号发送小程序卡片_微信公众号群发文章支持添加小程序卡片
- 浅谈常见的七种加密算法及实现
- 图片渲染(图像编码原理)
- 《程序员练习生》第2期 什么年龄开始编程最好
- OFDM--IDFT实现
- DAO层的异常处理模式