基于urllib和re,爬取豆瓣电影新片榜

前言

此篇文章中介绍如何使用urllib库和re模块,爬取豆瓣电影新片榜。

正文

1、梳理需求

  1. 百度搜索-豆瓣电影-排行榜-豆瓣新片榜
  2. 提取数据为:电影名称、上映时间主演

2、静态数据抓取实现步骤

  1. 查看所抓取数据在响应内容中是否存在
    右键->查看网页源码->搜索所抓数据关键字,确定抓取的内容是静态数据

  2. 查找并分析url地址规律
    https://movie.douban.com/chart,可以直接使用

  3. 编写正则表达式
    <p class="ul.*?</p>.*?<tr class="item">.*?title="(.*?)">.*?<p class="pl">(.*?)</p>.*?</table>
    如何编写请参考【Python学习笔记(四)】正则表达式re模块的使用,需要爬取的数据改写为(.*?)

  4. 发请求获取响应内容
    使用urllib.request 模块

  5. 解析响应内容,终端打印

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,爬取豆瓣电影新片榜相关推荐

  1. 爬虫学习笔记(三)——利用JSON爬取豆瓣热映的使用

    系列文章目录 爬虫学习笔记(一):requests基础用法之爬取各类主流网站1 爬虫学习笔记(二):requests基础用法之爬取各类主流网站2 文章目录 系列文章目录 前言 一.JSON是什么? 二 ...

  2. python爬取b站评论_学习笔记(1):写了个python爬取B站视频评论的程序

    学习笔记(1):写了个python爬取B站视频评论的程序 import requests import json import os table='fZodR9XQDSUm21yCkr6zBqiveY ...

  3. python爬b站评论_学习笔记(1):写了个python爬取B站视频评论的程序

    学习笔记(1):写了个python爬取B站视频评论的程序 import requests import json import os table='fZodR9XQDSUm21yCkr6zBqiveY ...

  4. 爬虫入门经典(四) | 如何爬取豆瓣电影Top250

      大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语-不温不火,本意是希望自己性情温和.作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己 ...

  5. 一起学爬虫——通过爬取豆瓣电影top250学习requests库的使用

    一起学爬虫--通过爬取豆瓣电影top250学习requests库的使用 学习一门技术最快的方式是做项目,在做项目的过程中对相关的技术查漏补缺. 本文通过爬取豆瓣top250电影学习python req ...

  6. python爬取豆瓣电影top250编码_Python学习日记1| 用python爬取豆瓣电影top250

    今天是3.17号. 离毕业论文开题只剩下不到15天,自己这边还不知道要写什么好,问了导师,导师给的范围超级广泛,实在是想吐槽.想了几天,决定了要尽快给老师说自己的想法和方向,做什么还是靠自己比较靠谱. ...

  7. 【实战】基于urllib.request登录爬取163邮箱

    目录 前言 参考项目 整体思路 基于urllib实现非自动爬取163邮箱 抓取网页信息 获取收件箱列表内容 获取信件 前言 最近在做一项从邮箱拿取数据进行处理的任务,由于数据量过大并且数据是邮件中的内 ...

  8. Python 爬虫学习笔记(十(2))scrapy爬取图书电商实战详解

    目标是爬取某一系列图书的信息,例如名称.价格.图片等. 一.创建scrapy项目 在PyCharm终端依次输入: scrapy startproject dangdang cd dangdang\da ...

  9. 学习笔记:网络机器人6.0python爬取多类型音乐步骤详解

    目标网址:音乐-谁伴我闯荡 爬虫逻辑: [找到要获取特定音乐的url]>>>[找到该资源链接的url]>>>[封装获取音乐的函数]>>>[封装下载 ...

最新文章

  1. centos7 解决chrome提示您的连接不是私密连接的方法
  2. MATLAB与Python numpy矩阵操作对应表
  3. 【论文解读】DCN-M:Google提出改进版DCN,用于大规模排序系统的特征交叉学习(附代码)...
  4. URAL - 1099 Work Scheduling(一般图最大匹配-带花树模板)
  5. 高德地图api接口文档_在 R 语言里面调用高德地图接口:地理编码与路径规划
  6. php ci如何保证数据安全,浅谈php(codeigniter)安全性注意事项
  7. php搭建的网站空白,使用phpstudy搭建dedecms网站后台页面空白解决方法
  8. 解决 mysql 插入数据报错: Cannot add or update a child row: a foreign key constraint fails
  9. 电芯容量在前期循环中容量增加_了解移动电源聚合物电芯,这篇文章就够了
  10. 向着DJANGO奔跑!
  11. 【Spring cloud 系列】:构建Eureka Server (02)
  12. Linux 最常用 的150 个命令汇总
  13. 啃老 万岁_Windows 7已死,您的杀毒软件万岁
  14. IDEA合并SVN分支代码到主干
  15. unity mysql 中文乱码_unity3d链接postgresql,读数据库内容并且显示(读出的中文在编辑器中乱码,发布standalone正常)...
  16. jzoj1212 重建道路
  17. 计算机管理事件id10016,【已解决】如何解决事件ID:10016错误
  18. 用echarts绘制瀑布图
  19. 小红书电商入驻全流程指南
  20. 慈航公益仲恺义工大区和爱心企业助力探亲日慈善活动

热门文章

  1. 如何快速使用 cloudflare CDN 加速
  2. 侠客风云传ol未能连接服务器,《侠客风云传online》8月31日服务器数据互通公告...
  3. 应用测试阶段和部署方式
  4. python解zuobiaoxi方程_欧式期权定价的python实现
  5. 品牌百度百科怎么创建百度百科怎么做
  6. osgb转json_超实用:一篇文章带你了解市面上主流通用的3D模型格式
  7. nginx配置ws反向代理
  8. 单词背诵 500 个考过二十次以上词汇
  9. 一篇文章带你搞定 SpringBoot 自定义欢迎页和网页图标 favicon
  10. python传递参数给sql_Python MySQLdb 执行sql语句时的参数传递方式