抓取猫眼TOP100的数据
2024-09-02 17:52:34
import requests import re import json from multiprocessing import Pool from multiprocessing import Manager import time import functools #函数的包装器 # 抓取猫眼TOP100的数据 # 第一步:下载页面 def get_one_page(url): # 设置UA ua_header = {"User-Agent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/53"} response = requests.get(url, headers=ua_header) if response.status_code == 200:#OK return response.text return None # 第二步:提取信息 def parse_one_page(html): # 使用正则表达式的懒惰+findall的模式来提取信息 pattern = re.compile('<p class="name"[\s\S]*?title="([\s\S]*?)"[\s\S]*?<p class="star">([\s\S]*?)</p>[\s\S]*?<p class="releasetime">([\s\S]*?)</p>') items = re.findall(pattern, html) # 使用yield来返回信息给上层 for item in items: yield{ "title":item[0].strip(), "actor":item[1].strip(), "time":item[2].strip() } # 第三步:保存到本地文件系统中 def write_to_file(item): # 存储成json格式,以便于将来能方便的提取出来 with open("maoyanTop100.txt", 'a', encoding="utf-8") as f: f.write(json.dumps(item, ensure_ascii=False)+'\n') #0-100: 0,10,20,...,90 #http://maoyan.com/board/4?offset= def CrawlPage(lock, offset): # 将下载页面,解析页面及保存信息放入一个函数中 url = "http://maoyan.com/board/4?offset="+str(offset) html = get_one_page(url) for item in parse_one_page(html): lock.acquire() #加锁 write_to_file(item) lock.release() #释放锁 if __name__ == "__main__": # 使用进程池来抓取数据 # 在进程池之间通信或者加锁时需要用Manager manager = Manager() lock = manager.Lock() # 产生一个新的包装函数 newCrawlPage = functools.partial(CrawlPage, lock) pool = Pool() pool.map(newCrawlPage, [i*10 for i in range(10)]) pool.close() pool.join()
效果:
最新文章
- 关于开启.NET在线提升教育培训的通知! - 可在此页面观看在线直播!
- 电信计费业务:预后融合OCS到底应该实扣还是虚扣?
- 警告 “util.NativeCodeLoader: Unable to load native-hadoop library for your platform”
- 加州大学伯克利分校Stat2.3x Inference 统计推断学习笔记: Section 2 Testing Statistical Hypotheses
- 【EM算法】EM(转)
- magento 图片缓存是如何生成的
- Go运行环境搭建(Mac\Linux)
- 制作和unity调用动态链接库dll文件
- Mtk Android 打包解包*.img
- haproxy主配置文件
- java操作mysql的增删改查
- 字符串比较strcmp
- Python用Pillow(PIL)进行简单的图像操作
- Node的安装和进程管理
- Dynamics CRM项目实例之六:积分管理,汇总字段,计算字段,快速查看视图
- 好程序员分享居中一个float元素
- 简单的异步函数async/await例子
- hdu 6185 递推+【矩阵快速幂】
- localStorage单页面及不同页面监听变动
- Codeforces 623B Array GCD
热门文章
- [Fw]初探linux中断系统(1)
- 自增主键与UUID的优缺点
- Python的基本类型(list,tuple)
- java 调用DB2 SYSPROC.ADMIN_CMD存储过程导出数据
- 何时使用move
- xshell xftp使用
- Hdu-3333 Turning Tree (离线树状数组/线段树)
- 使用Maven创建Web项目(转)
- Robot Framework使用技巧之内部变量
- 转 HTML精确定位:scrollLeft,scrollWidth,clientWidth,offsetWidth之完全详解