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)相关推荐

  1. 利用正则表达式爬取猫眼电影TOP100信息

    本文利用requests库和正则表达式爬取了猫眼电影TOP100电影信息,并将电影封面和标题.主演等文字信息保存在了本地.本文完整代码链接:https://github.com/iapcoder/Ma ...

  2. (爬取猫眼电影TOP100的电影信息(含图片、评分等))

    爬取猫眼电影TOP100的电影信息(含图片.评分等) 让我们直接进入正题 1.导入需要的库 2.获取页面 3.分析页面 4.保存文件 全部代码 让我们直接进入正题 对猫眼电影的网站进行分析 其链接为: ...

  3. 爬取猫眼电影TOP100榜单

    爬取猫眼电影Top100榜单 分析网页 内容提取 前提:会基础的python3以及requests库,正则等. 分析网页 top100榜单网址为https://maoyan.com/board/4,通 ...

  4. 爬虫从头学之Requests+正则表达式爬取猫眼电影top100

    爬取思路 当我们想要爬取一个页面的时候,我们要保证思路清晰,爬虫的思路分四个步骤,发起请求,获取响应内容,解析内容,存储内容.根据这四个内容我们的思路就很清晰.以下为具体步骤 使用requests库爬 ...

  5. python爬取猫眼_python正则表达式爬取猫眼电影top100

    用正则表达式爬取猫眼电影top100,具体内容如下 #!/usr/bin/python # -*- coding: utf-8 -*- import json # 快速导入此模块:鼠标先点到要导入的函 ...

  6. 猫眼html源码,50 行代码教你爬取猫眼电影 TOP100 榜所有信息

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 今天,手把手教你入门 Python 爬虫,爬取猫眼电影 TOP100 榜信息. 作者 | 丁 ...

  7. 50 行代码教你爬取猫眼电影 TOP100 榜所有信息

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 今天,手把手教你入门 Python 爬虫,爬取猫眼电影 TOP100 榜信息. 作者 | 丁 ...

  8. python爬虫入门练习:BeautifulSoup爬取猫眼电影TOP100排行榜,pandas保存本地excel文件

    传送门:[python爬虫入门练习]正则表达式爬取猫眼电影TOP100排行榜,openpyxl保存本地excel文件 对于上文使用的正则表达式匹配网页内容,的确是有些许麻烦,替换出现任何的差错都会导致 ...

  9. Python爬取猫眼电影TOP100榜

    Python爬取猫眼电影TOP100榜 兴趣点: 这个没什么特别的兴趣,只是单纯爬猫眼练手的人太多了,所以我也打算加入他们,对猫眼员工说一声不好意思了,哈哈哈! 爬取网址: 传送门:https://m ...

最新文章

  1. daemon函数的原理及使用详解
  2. ASP.net mvc Code First 更新数据库
  3. jmeter之-用Firefox录制https协议证书问题
  4. 泛型指针,原生指针和智能指针
  5. 使用命令修改注册表键值及权限
  6. python拉格朗日插值法_Python 实现拉格朗日插值
  7. Win7安装驱动提示“无法验驱动程序数字签名”怎么办?
  8. 输入一个整数求其各位数字的平方和c语言,C++程式输入一个长整数,求各位数字的平方和...
  9. 【Linux应用层】防火墙iptables命令
  10. 短信接入程序,短信接入平台,彩信接入程序,移动短信接入软件,移动彩信接入平台模块
  11. Apache Project LIst 所有项目介绍
  12. 树莓派的Python成功解决TypeError: Image data cannot be converted to float
  13. memory exhausted mysql 42000 1064
  14. stm32闪存的理解
  15. 微信公众号发送小程序卡片_微信公众号群发文章支持添加小程序卡片
  16. 浅谈常见的七种加密算法及实现
  17. 图片渲染(图像编码原理)
  18. 《程序员练习生》第2期 什么年龄开始编程最好
  19. OFDM--IDFT实现
  20. DAO层的异常处理模式

热门文章

  1. ajax form表单提交,serialize和formData的区别
  2. jq ajaxForm和ajaxSubmit 两者的区别
  3. FFmpeg unable to find a suitable output format for
  4. Excel URL解码函数的使用
  5. Java8 Lambda表达式和流操作如何让你的代码变慢5倍
  6. 入行软件业 你需要知道这些
  7. Snow Whispering
  8. 考研专业微型计算机,什么专业考研考微机原理
  9. 指甲之指甲宝宝健康晴雨表
  10. linux 动态库和静态库分析实例