《Python网络爬虫:从入门到实践》3.4.3自我实践题:

获取豆瓣网上TOP250电影的英文名、港台名、导演、主演、上映年份、电影分类及评分。

学习嘛,就费了点劲自己试了一下,挺耽误时间的,不过好在搞出来了,书上给的代码有点问题,不够全面。

现在把自己测试过的源代码给大家分享出来,供大家学习借鉴,正好正则表达式一起学了,还是很有收获的。

由于电影的英文名、港台名爬取过滤比较麻烦,太耽误时间,所以忽略掉了,知道怎么弄就行。

代码测试时间是2019年11月8日。

以下是 rmv_by_re 模块中的 rmv_by_re 函数。

import re
def rmv_by_re(regex,somelist,num):"""根据正则表达式的结构和分组号替换列表中元素"""results = []for y in range(0,len(somelist)):r = re.search(regex,somelist[y])if r != None :results.append(r.group(num))else:results.append(somelist[y])return results

以下是主程序:

#3.4.3自我实践题
import requests
import rmv_by_re
import time
from bs4 import BeautifulSoup# 导演
dirs = []
# 主演
acts = []
# 年份
year = []
# 类别
categories = []
# 评分
grades = []def show_lists(dirs,acts,year,categories,grades):print("共有",len(dirs),"个导演:",dirs)print("对应的",len(acts),"组主演:",acts)print(len(year),"部电影的出品年份:",year)print(len(categories),"部电影的类别:",categories)print(len(grades),"部电影的评分:",grades)def get_top250details(dirs,acts,year,categories,grades):headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x'+ '64) AppleWebKit/537.36 (KHTML, like Gecko) Chrom'+ 'e/70.0.3538.102 Safari/537.36 Edge/18.18362','Host': 'movie.douban.com'}allcontents = []for i in range(0,10):link = 'https://movie.douban.com/top250?start=' + str(i * 25)r = requests.get(link,headers=headers,timeout=15)soup = BeautifulSoup(r.text,"html.parser")# 提取评分列表for one in soup.find_all("span",class_="rating_num"):grades.append(str(one.text.strip()))# 提取包含导演、主演、年份、类别的 p 标签for everyone in soup.find_all("p",class_=''):allcontents.append(str(everyone))if i == 9:# 提取导演、主演名字的正则表达式dir_maj_re= '导演:\s*(.*?)\s*主(演:)?\s*(.*[\S$])\s*<'# 提取年份的正则表达式year_re = '(20|19|18)[0-9]{2}'# 提取类别的正则表达式cate_re = '(20|19|18)[0-9]{2}.*?/.*?/\s*(.*[^\s$])'for num in range(0,len(allcontents)):if "主"not in allcontents[num] :dirs.append(rmv_by_re.rmv_by_re('导演:\s*(.*[\S$])\s*<',allcontents,1)[num])else:dirs.append(rmv_by_re.rmv_by_re(dir_maj_re,allcontents,1)[num])if "主"not in allcontents[num] :acts.append("(未提供)")else:acts.append(rmv_by_re.rmv_by_re(dir_maj_re,allcontents,3)[num])year.append(rmv_by_re.rmv_by_re(year_re,allcontents,0)[num])categories.append(rmv_by_re.rmv_by_re(cate_re,allcontents,2)[num])time.sleep(3)get_top250details(dirs,acts,year,categories,grades)
show_lists(dirs,acts,year,categories,grades)

这本书还是不错,适合对Python爬虫特别感兴趣的爱好者学习,浅尝辄止的估计看不下去。有疑问的可以给我留言,有时间的话我会解答。

Python获取TOP250电影的英文名、港台名、导演、主演、上映年份、电影分类及评分相关推荐

  1. python 网络爬虫 1.2 获取豆瓣TOP250电影的中英文名、港台名、导演、上映年份、电影分类以及评分,将数据存入文档。

    题目: 获取豆瓣TOP250电影的中英文名.港台名.导演.上映年份.电影分类以及评分,将数据存入文档. 代码: import codecs import csv import refrom reque ...

  2. qt获取本机全部ipv4_QT5下获取本机IP地址、计算机名、网络连接名、MAC地址、子网掩码、广播地址...

    获取主机名称 /* * 名称:get_localmachine_name * 功能:获取本机机器名称 * 参数:no * 返回:QString */ QString CafesClient::get_ ...

  3. python中的字体英文名_获取中文字体的英文名字

    (方法在分割线后面,前面叙事) 今天用了很久电脑,突然就觉得看着Windows下Chrome的字体觉得很不舒服,跟Mac下的差太远了,于是就开始折腾怎么设置浏览器字体. 先讲一下流程,我的操作方案是: ...

  4. 爬去TOP250电影的英文名字

    爬取TOP250电影的英文名字 代码如下: import requests from bs4 import BeautifulSoup def get_movies():headers={'user- ...

  5. python获取mac、计算机id_python 获取本机IP、mac地址、计算机名的简单示例

    这篇文章主要为大家详细介绍了python 获取本机IP.mac地址.计算机名的简单示例,具有一定的参考价值,可以用来参考一下. 对python获取本机IP.mac地址.计算机名感兴趣的小伙伴,下面一起 ...

  6. python获取本机 ip地址、mac地址(物理地址)、计算机名、硬盘序列号、CPU序列号、主板序列号、bios序列号、bios uuid号

    文章目录 python获取本机IP地址.mac地址(物理地址).计算机名 物理地址 计算机名.ip地址 硬盘序列号 CPU序列号 主板序列号 bios序列号 bios uuid号 python获取本机 ...

  7. python获取计算机IP、mac地址、计算机名

    在python中获取ip地址和在php中有很大不同,在php中往往比较简单.那再python中怎么做呢? 我们先来看一下python 获得本机MAC地址: import uuid def get_ma ...

  8. python获取类函数的变量-python 动态获取当前运行的类名和函数名的方法

    一.使用内置方法和修饰器方法获取类名.函数名 python中获取函数名的情况分为内部.外部,从外部的情况好获取,使用指向函数的对象,然后用__name__属性 复制代码 代码如下: def a():p ...

  9. monty python and the holy grail_电影 蒙迪佩登与圣杯 Monty Python and the Holy Grail 英文剧本.doc...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspPython 电影 蒙迪佩登与圣杯 Monty Python a ...

最新文章

  1. 腾讯计费:亿万级大促活动自动化保障体系
  2. img=img%3e128 matlab,Matlab中一般的数值计算和使用
  3. Azure Virtual Network, 虚拟网络
  4. jQuery学习笔记系列(一)——入口函数,jQuery对象和DOM对象,jQuery选择器、样式操作、效果(显示隐藏、滑入滑出、淡入淡出、自定义动画、停止动画队列)
  5. (四)Linux内核模块化编程
  6. 基于Spring Cloud微服务化开发平台-Cloud Platform后台管理系统 v3.1.0
  7. 可靠性测试设备技术含量_品牌手机厂商为何如此重视可靠性测试,海拓仪器一语道破玄机...
  8. 【连载】人类唯一的出路:变成人工智能(二)脑机接口
  9. [Web Chart系列之七] 物理动画效果(如撕扯效果)
  10. Knative 带来的极致 Serverless 体验
  11. yarn install node-sass(gulp-sass) 安装失败解决方案
  12. c语言程序改错:求两个整数的最小公倍数,【C语言】求两个整数的最大公约数、最小公倍数...
  13. IDEA打开README.md文件时卡死
  14. 饿了么UI组件库中,Upload组件上传闪动的解决
  15. ENSP实验——Telnet远程连接
  16. REST Assured 使用详解
  17. 第一阶段冲刺 博客评价
  18. 自定义拍照时 拍照界面_女研究生劝父亲盖房时把围墙退后三尺,新房成网红,一天20人拍照...
  19. 【Rust 日报】2023-1-19 Lars Bergstrom当选为Rust基金会董事会主席
  20. 学习编程的九个小白电脑知识

热门文章

  1. 通过alist挂在阿里网盘的方法
  2. 【Mysql学习日记2——修改】
  3. appwidget实现和RemoteView分析
  4. JAVA 使用WinAppDriver对QT桌面软件进行自动化测试
  5. 计算机键盘接入fpga,基于FPGA的键盘接口设计毕业论文.doc
  6. 计算机科学 课程主页
  7. Matlab下载地址
  8. 2019工行天津分行暑期实习生(金融科技岗)面经
  9. Golang学习之net包详解
  10. DTS Digital