Python爬虫实战01:Requests+正则表达式爬取猫眼电影
1 目标站点的分析
2 流程框架
- 抓取单页内容
利用requests请求目标站点,得到单个网页HTML代码,返回结果。
- 正则表达式分析
根据HTML代码分析得到电影的名称、主演、上映、时间、评分、图片链接等信息。
- 保存至文件
通过文件的形式将结果保存,每一部电影一个结果一行Json字符串。
- 开启多循环及多线程
对多页内容遍历,开启多线程提高抓取速度。
3 爬虫实战
3.1 导入头文件
"""This module is 爬取猫眼top100"""
import json # 保存文件时用到json格式
import re # 正则表达式
from multiprocessing import Pool # 最后使用了多线程,极大提高速度import requests
from requests.exceptions import RequestException # 引入异常类
3.2 定义获取单页内容函数
def get_one_page(url):'''获取单页内容'''try:# 不加headers会被猫眼禁止访问headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36''(KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36'}response = requests.get(url, headers=headers)# 若状态码等于200代表成功,返回网页结果if response.status_code == 200:return response.textreturn Noneexcept RequestException: # 否则返回空值return None
3.3 定义解析单个网页函数
def parse_one_page(html):'''解析单个网页'''# 声明正则表达式对象pattern = re.compile(r'<dd>.*?board-index.*?>(\d+)</i>.*?data-src="(.*?)".*?class="name"><a''.*?>(.*?)</a>.*?star">(.*?)</p>.*?releasetime">(.*?)</p>''.*?integer">(.*?)</i>.*?fraction">(.*?)</i>.*?</dd>', re.S)items = re.findall(pattern, html) # 查找所有符合的元素for item in items:yield { # 建立一个字典生成器item,美化输出'index': item[0],'image': item[1],'title': item[2],'actor': item[3].strip()[3:], # 删除字符串首位空格'time': item[4].strip()[5:],'score': item[5]+item[6]}
3.4 定义保存文件函数
def write_to_file(content):'''save file'''# 'a'表示往后追加的方式添加内容。# encoding和ensure_ascii参数确保显示中文# json.dumps()用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错with open('Maoyantop100/result.txt', 'a', encoding='utf-8') as f:f.write(json.dumps(content, ensure_ascii=False)+'\n')
3.5 定义主函数
def main(offset):'''main'''# 共十页,offset=[0,10,20,30,40,...,90]url = 'http://maoyan.com/board/4?offset=' + str(offset)# 用变量html来结果返回结果html = get_one_page(url)# parse_one_page返回itemsfor item in parse_one_page(html):print(item) # item是一个字典生成器write_to_file(item) # 把每个字典打印出来并保存
3.6 __name__
if __name__ == '__main__':# for i in range(10): # 单线程方法# main(i*10)# 多线程方法pool = Pool() # 声明一个进程池pool.map(main, [i*10 for i in range(10)]) # 利用map函数pool.close() # 停止进入新进程pool.join() # 等待子进程完成
Python爬虫实战01:Requests+正则表达式爬取猫眼电影相关推荐
- Python爬虫实战案例一:爬取猫眼电影
背景 笔者上一篇文章<基于猫眼票房数据的可视化分析>中爬取了猫眼实时票房数据,用于展示近三年电影票房概况.由于数据中缺少导演/演员/编剧阵容等信息,所以爬取猫眼电影数据进行补充.关于爬虫的 ...
- python爬虫入门练习:BeautifulSoup爬取猫眼电影TOP100排行榜,pandas保存本地excel文件
传送门:[python爬虫入门练习]正则表达式爬取猫眼电影TOP100排行榜,openpyxl保存本地excel文件 对于上文使用的正则表达式匹配网页内容,的确是有些许麻烦,替换出现任何的差错都会导致 ...
- 爬虫从头学之Requests+正则表达式爬取猫眼电影top100
爬取思路 当我们想要爬取一个页面的时候,我们要保证思路清晰,爬虫的思路分四个步骤,发起请求,获取响应内容,解析内容,存储内容.根据这四个内容我们的思路就很清晰.以下为具体步骤 使用requests库爬 ...
- Requests+正则表达式爬取猫眼电影(TOP100榜)
猫眼电影网址:www.maoyan.com 前言:网上一些大神已经对猫眼电影进行过爬取,所用的方法也是各有其优,最终目的是把影片排名.图片.名称.主要演员.上映时间与评分提取出来并保存到文件或者数据库 ...
- requests+正则表达式爬取猫眼电影TOP100
代码: 1 import json 2 from multiprocessing import Pool 3 import requests 4 # http://cn.python-requests ...
- Python 爬虫实战,模拟登陆爬取数据
Python 爬虫实战,模拟登陆爬取数据 从0记录爬取某网站上的资源连接: 模拟登陆 爬取数据 保存到本地 结果演示: 源网站展示: 爬到的本地文件展示: 环境准备: python环境安装 略 安装r ...
- python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程
python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程 前言 一丶整体思路 二丶遇到的问题 三丶分析URL 四丶解析页面 五丶写入文件 六丶完整代码 七丶最后 前言 大家好我是墨绿 头顶总 ...
- Python爬虫实战系列(一)-request爬取网站资源
Python爬虫实战系列(一)-request爬取网站资源 python爬虫实战系列第一期 文章目录 Python爬虫实战系列(一)-request爬取网站资源 前言 一.request库是什么? 二 ...
- python爬虫实战(一)--爬取知乎话题图片
原文链接python爬虫实战(一)–爬取知乎话题图片 前言 在学习了python基础之后,该尝试用python做一些有趣的事情了–爬虫. 知识准备: 1.python基础知识 2.urllib库使用 ...
最新文章
- 大话设计模式之简单的工厂模式
- android 圆角图片的实现
- 领域驱动设计-什么是领域驱动设计和怎么使用它
- Android UI线程和非UI线程
- Objective-C模版方法(TemplateMethod)
- java线程跟多线程
- 转载:word排版之长英文单词自动换行
- 产品级垃圾文本分类器
- Localtunnel(Node.js 版) 使用教程
- 【备注】【C11】《Android游戏编程之从零开始》PDF 下载
- Python连连看小游戏源代码
- 一位射频技术支持工程师的工作感悟
- jQuery实现表格冻结行和列
- Xcode14 终于放弃了bitcode和armv7架构,还有iOS 9、iOS 10
- 圣诞节,用python给微信的头像加一个圣诞帽,整起
- excel图片技巧:如何为报表配上节日祝福动画
- 使用JDK中的安全包对数据进行加解密
- mysql 删除重复_MySQL查询和删除重复记录
- 简单了解一些分布式术语,分享给大家
- 新技能get,微信提现这样操作可免手续费