【Python_urllib学习笔记(四)】基于urllib和re,爬取豆瓣电影新片榜
基于urllib和re,爬取豆瓣电影新片榜
前言
此篇文章中介绍如何使用urllib库和re模块,爬取豆瓣电影新片榜。
正文
1、梳理需求
- 百度搜索-豆瓣电影-排行榜-豆瓣新片榜
- 提取数据为:电影名称、上映时间主演
2、静态数据抓取实现步骤
查看所抓取数据在响应内容中是否存在
右键->查看网页源码->搜索所抓数据关键字,确定抓取的内容是静态数据
查找并分析url地址规律
https://movie.douban.com/chart,可以直接使用
编写正则表达式
<p class="ul.*?</p>.*?<tr class="item">.*?title="(.*?)">.*?<p class="pl">(.*?)</p>.*?</table>
如何编写请参考【Python学习笔记(四)】正则表达式re模块的使用,需要爬取的数据改写为(.*?)发请求获取响应内容
使用urllib.request 模块解析响应内容,终端打印
3、根据静态数据抓取的步骤,定义爬虫类的结构
class XxxSpider:def __init__(self):”“” 定义爬虫常用变量 “”“def get_html(self, url):”“” 获取相应内容函数 “”“def parse_html(self):”“” 解析提取数据的函数 “”“def handle_html(self, list):”“” 数据处理函数 “”“def run(self):”“” 程序入口函数 “”“
4、具体代码的实现
class DoubanSpider:"""猫眼电影国内热榜前10名抓取"""def __init__(self):self.url = 'https://movie.douban.com/chart' # 定义url地址self.headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36'} # 重构请求头self.times = 0 # 初始化爬取数据次数def get_html(self, url):"""function: 获取相应内容函数in: url:url地址out: html:通过url地址获取的响应内容return: Noneothers: Gets Corresponding Content Function"""req = request.Request(url=url, headers=self.headers) # 构造请求对象res = request.urlopen(req) # 获取响应对象html = res.read().decode() # 获取响应内容self.parse_html(html) # 直接调用解析函数进行数据提取def parse_html(self, html):"""function: 解析提取数据的函数in: Noneout: Nonereturn: int >0 ok, <0 some wrongothers: None"""regex = '<p class="ul.*?</p>.*?<tr class="item">.*?title="(.*?)">.*?<p class="pl">(.*?)</p>.*?</table>' # 定义正则表达式pattern = re.compile(regex, re.S) # 创建正则表达式的编译对象r_list = pattern.findall(html) # 使用re.findall()方法self.handle_html(r_list) # 直接调用数据处理函数def handle_html(self, list):"""function: 数据处理函数in: listout: Nonereturn: terminal printothers: Data Handle Function"""dic = {} # 初始化字典for r in list:dic["name"] = r[0].strip() # 字典name赋值,去空格dic["time&star"] = r[1].strip() # 字典time&star赋值,去空格self.times += 1 # 每执行一次 +1print(dic) # 终端打印字典print("数据爬取成功,共爬取{}条数据".format(self.times)) # 终端打印提示信息def run(self):"""function: 程序入口函数in: Noneout: Nonereturn: Noneothers: Entry Function"""url = self.url # url地址self.get_html(url) # 调用get_html()方法if __name__ == '__main__':spider = DoubanSpider() # 爬虫类实例化spider.run() # 执行入口函数
5、代码的实现效果
【Python_urllib学习笔记(四)】基于urllib和re,爬取豆瓣电影新片榜相关推荐
- 爬虫学习笔记(三)——利用JSON爬取豆瓣热映的使用
系列文章目录 爬虫学习笔记(一):requests基础用法之爬取各类主流网站1 爬虫学习笔记(二):requests基础用法之爬取各类主流网站2 文章目录 系列文章目录 前言 一.JSON是什么? 二 ...
- python爬取b站评论_学习笔记(1):写了个python爬取B站视频评论的程序
学习笔记(1):写了个python爬取B站视频评论的程序 import requests import json import os table='fZodR9XQDSUm21yCkr6zBqiveY ...
- python爬b站评论_学习笔记(1):写了个python爬取B站视频评论的程序
学习笔记(1):写了个python爬取B站视频评论的程序 import requests import json import os table='fZodR9XQDSUm21yCkr6zBqiveY ...
- 爬虫入门经典(四) | 如何爬取豆瓣电影Top250
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...
- 一起学爬虫——通过爬取豆瓣电影top250学习requests库的使用
一起学爬虫--通过爬取豆瓣电影top250学习requests库的使用 学习一门技术最快的方式是做项目,在做项目的过程中对相关的技术查漏补缺. 本文通过爬取豆瓣top250电影学习python req ...
- python爬取豆瓣电影top250编码_Python学习日记1| 用python爬取豆瓣电影top250
今天是3.17号. 离毕业论文开题只剩下不到15天,自己这边还不知道要写什么好,问了导师,导师给的范围超级广泛,实在是想吐槽.想了几天,决定了要尽快给老师说自己的想法和方向,做什么还是靠自己比较靠谱. ...
- 【实战】基于urllib.request登录爬取163邮箱
目录 前言 参考项目 整体思路 基于urllib实现非自动爬取163邮箱 抓取网页信息 获取收件箱列表内容 获取信件 前言 最近在做一项从邮箱拿取数据进行处理的任务,由于数据量过大并且数据是邮件中的内 ...
- Python 爬虫学习笔记(十(2))scrapy爬取图书电商实战详解
目标是爬取某一系列图书的信息,例如名称.价格.图片等. 一.创建scrapy项目 在PyCharm终端依次输入: scrapy startproject dangdang cd dangdang\da ...
- 学习笔记:网络机器人6.0python爬取多类型音乐步骤详解
目标网址:音乐-谁伴我闯荡 爬虫逻辑: [找到要获取特定音乐的url]>>>[找到该资源链接的url]>>>[封装获取音乐的函数]>>>[封装下载 ...
最新文章
- centos7 解决chrome提示您的连接不是私密连接的方法
- MATLAB与Python numpy矩阵操作对应表
- 【论文解读】DCN-M:Google提出改进版DCN,用于大规模排序系统的特征交叉学习(附代码)...
- URAL - 1099 Work Scheduling(一般图最大匹配-带花树模板)
- 高德地图api接口文档_在 R 语言里面调用高德地图接口:地理编码与路径规划
- php ci如何保证数据安全,浅谈php(codeigniter)安全性注意事项
- php搭建的网站空白,使用phpstudy搭建dedecms网站后台页面空白解决方法
- 解决 mysql 插入数据报错: Cannot add or update a child row: a foreign key constraint fails
- 电芯容量在前期循环中容量增加_了解移动电源聚合物电芯,这篇文章就够了
- 向着DJANGO奔跑!
- 【Spring cloud 系列】:构建Eureka Server (02)
- Linux 最常用 的150 个命令汇总
- 啃老 万岁_Windows 7已死,您的杀毒软件万岁
- IDEA合并SVN分支代码到主干
- unity mysql 中文乱码_unity3d链接postgresql,读数据库内容并且显示(读出的中文在编辑器中乱码,发布standalone正常)...
- jzoj1212 重建道路
- 计算机管理事件id10016,【已解决】如何解决事件ID:10016错误
- 用echarts绘制瀑布图
- 小红书电商入驻全流程指南
- 慈航公益仲恺义工大区和爱心企业助力探亲日慈善活动
热门文章
- 如何快速使用 cloudflare CDN 加速
- 侠客风云传ol未能连接服务器,《侠客风云传online》8月31日服务器数据互通公告...
- 应用测试阶段和部署方式
- python解zuobiaoxi方程_欧式期权定价的python实现
- 品牌百度百科怎么创建百度百科怎么做
- osgb转json_超实用:一篇文章带你了解市面上主流通用的3D模型格式
- nginx配置ws反向代理
- 单词背诵 500 个考过二十次以上词汇
- 一篇文章带你搞定 SpringBoot 自定义欢迎页和网页图标 favicon
- python传递参数给sql_Python MySQLdb 执行sql语句时的参数传递方式