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+正则表达式爬取猫眼电影相关推荐

  1. Python爬虫实战案例一:爬取猫眼电影

    背景 笔者上一篇文章<基于猫眼票房数据的可视化分析>中爬取了猫眼实时票房数据,用于展示近三年电影票房概况.由于数据中缺少导演/演员/编剧阵容等信息,所以爬取猫眼电影数据进行补充.关于爬虫的 ...

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

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

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

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

  4. Requests+正则表达式爬取猫眼电影(TOP100榜)

    猫眼电影网址:www.maoyan.com 前言:网上一些大神已经对猫眼电影进行过爬取,所用的方法也是各有其优,最终目的是把影片排名.图片.名称.主要演员.上映时间与评分提取出来并保存到文件或者数据库 ...

  5. requests+正则表达式爬取猫眼电影TOP100

    代码: 1 import json 2 from multiprocessing import Pool 3 import requests 4 # http://cn.python-requests ...

  6. Python 爬虫实战,模拟登陆爬取数据

    Python 爬虫实战,模拟登陆爬取数据 从0记录爬取某网站上的资源连接: 模拟登陆 爬取数据 保存到本地 结果演示: 源网站展示: 爬到的本地文件展示: 环境准备: python环境安装 略 安装r ...

  7. python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程

    python爬虫 requests+bs4爬取猫眼电影 傻瓜版教程 前言 一丶整体思路 二丶遇到的问题 三丶分析URL 四丶解析页面 五丶写入文件 六丶完整代码 七丶最后 前言 大家好我是墨绿 头顶总 ...

  8. Python爬虫实战系列(一)-request爬取网站资源

    Python爬虫实战系列(一)-request爬取网站资源 python爬虫实战系列第一期 文章目录 Python爬虫实战系列(一)-request爬取网站资源 前言 一.request库是什么? 二 ...

  9. python爬虫实战(一)--爬取知乎话题图片

    原文链接python爬虫实战(一)–爬取知乎话题图片 前言 在学习了python基础之后,该尝试用python做一些有趣的事情了–爬虫. 知识准备: 1.python基础知识 2.urllib库使用 ...

最新文章

  1. 大话设计模式之简单的工厂模式
  2. android 圆角图片的实现
  3. 领域驱动设计-什么是领域驱动设计和怎么使用它
  4. Android UI线程和非UI线程
  5. Objective-C模版方法(TemplateMethod)
  6. java线程跟多线程
  7. 转载:word排版之长英文单词自动换行
  8. 产品级垃圾文本分类器
  9. Localtunnel(Node.js 版) 使用教程
  10. 【备注】【C11】《Android游戏编程之从零开始》PDF 下载
  11. Python连连看小游戏源代码
  12. 一位射频技术支持工程师的工作感悟
  13. jQuery实现表格冻结行和列
  14. Xcode14 终于放弃了bitcode和armv7架构,还有iOS 9、iOS 10
  15. 圣诞节,用python给微信的头像加一个圣诞帽,整起
  16. excel图片技巧:如何为报表配上节日祝福动画
  17. 使用JDK中的安全包对数据进行加解密
  18. mysql 删除重复_MySQL查询和删除重复记录
  19. 简单了解一些分布式术语,分享给大家
  20. 新技能get,微信提现这样操作可免手续费

热门文章

  1. 【CloudXNS教您几招】如何让多ip域名配置游刃有余?(2)
  2. WinForm 下实现一个自动关闭的MessageBox
  3. CSS2.1 盒模型
  4. mac 遇到的奇怪问题?
  5. 【清北前紧急补课8】A % B Problem
  6. [ML]熵、KL散度、信息增益、互信息-学习笔记
  7. CABasicAnimation 使用
  8. 基姆拉尔森星期计算公式
  9. AutoItLibrary安装和常见问题解决
  10. Java Android未捕获异常处理机制