Python爬虫实战案例(爬取文字)

爬取豆瓣电影的数据

首先打开"豆瓣电影 Top 250"这个网页:

  • 按F12,找到网络;
  • 向上拉动,找到名称栏中的第一个,单机打开;
  • 可以在标头里看到请求URL请求方式复制URL(需要用到);
  • 在表头的最下面有"User-Agent",也复制下来(也可以下载pip install fake_useragent库,用别人写好的UA)。
    在这里插入图片描述
    在这里插入图片描述

定位我们想要获取信息的标签位置

我们想要爬取每个电影如下图红圈中的信息
在这里插入图片描述

按下F12后,可以点击左上角的小工具,然后可以在放到你想要的数据上面,然后便可以在元素栏下定位到其所属的标签,再通过一些数据分析的方法去定位到它,并获取。
在这里插入图片描述

获取多页的电影信息

因为豆瓣电影Top 250这个页面,每一页只能展示25个电影,当我们点击到后面几页后会发现,每一页的网址只有25–>50–>–>75这样的变化,其他的没有变化,所以变化可以通过for循环来遍历它,从而达到获取更多页数的电影信息
在这里插入图片描述
在这里插入图片描述
具体代码如下:

for i in range(0, 250, 25):url = f"https://movie.douban.com/top250?start={i}&filter="

完整代码

# 豆瓣电影
import requests   # 别人写好的ua  pip install fake_useragent
import fake_useragent
from lxml import etree
import reif __name__ == '__main__':# UA伪装head = {# "User-Agent" : "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"# 用 import fake_useragent 库里的UA"User-Agent": fake_useragent.UserAgent().random}# 打开一个文件将获取的数据写进去fp = open("./doubanFilm.txt", "w", encoding="utf-8")# 1、url# url = "https://movie.douban.com/top250"# url2 = "https://movie.douban.com/top250?start=25&filter="# url3 = "https://movie.douban.com/top250?start=50&filter="for i in range(0, 250, 25):url = f"https://movie.douban.com/top250?start={i}&filter="# 发送请求response = requests.get(url, headers=head)# 获取想要的数据res_text = response.text# print(res_text)# 数据解析tree = etree.HTML(res_text)# 定位所有的li标签li_list = tree.xpath("//ol[@class='grid_view']/li")for li in li_list:# 获取电影名字film_name = "".join(li.xpath(".//span[@class='title'][1]/text()"))# 获取导演、主演、年份、国家、电影类型director_actor_y_country_type = "".join(li.xpath(".//div[@class='bd']/p[1]/text()"))# 获取评分score = "".join(li.xpath(".//span[@class='rating_num']/text()"))# 获取标签语quote = "".join(li.xpath(".//span[@class='inq']/text()"))# 将获取到的导演、主演、年份、国家、电影类型放到一个新列表里,并去除空格new_str = director_actor_y_country_type.strip()# 将导演从新列表中取出  用正则表达式去匹配director = re.match(r"导演: ([a-zA-Z\u4e00-\u9fa51]+)(.*?)", new_str).group(1)# 取年份y = re.match(r"([\s\S]+?)(\d+)(.*?)", new_str).group(2)# 取国家country = new_str.rsplit("/")[-2].strip()# 取电影类型types = new_str.rsplit("/")[-1].strip()# 因为有些电影没有主演所以将主演用try-except方法做判断,有主演的取出来,没有主演设定为“no”try:actor = re.match(r"(.*?)主演: ([a-zA-Z\u4e00-\u9fa5·]+)(.*?)", new_str).group(2)except Exception as e:actor = "no"# 因为每个数据都用.join的方法转换成了字符串,所以便可以将这些数据相加并用#隔开,便能连在一起,并换行,使得数据更加工整fp.write(film_name + "#" + director + "#" + actor + "#" + y + "#"+ country + "#" + types + "#" + score + "#" + quote + "\n")print(film_name, director, actor, y, country, types, score, quote)fp.close()

所爬取到的部分内容如下所示:

肖申克的救赎#弗兰克·德拉邦特#蒂姆·罗宾斯#1994#美国#犯罪 剧情#9.7#希望让人自由。
霸王别姬#陈凯歌#张国荣#1993#中国大陆 中国香港#剧情 爱情 同性#9.6#风华绝代。
阿甘正传#罗伯特·泽米吉斯#汤姆·汉克斯#1994#美国#剧情 爱情#9.5#一部美国近现代史。
泰坦尼克号#詹姆斯·卡梅隆#莱昂纳多·迪卡普里奥#1997#美国 墨西哥#剧情 爱情 灾难#9.5#失去的才是永恒的。 
千与千寻#宫崎骏#柊瑠美#2001#日本#剧情 动画 奇幻#9.4#最好的宫崎骏,最好的久石让。 
这个杀手不太冷#吕克·贝松#让·雷诺#1994#法国 美国#剧情 动作 犯罪#9.4#怪蜀黍和小萝莉不得不说的故事。
美丽人生#罗伯托·贝尼尼#罗伯托·贝尼尼#1997#意大利#剧情 喜剧 爱情 战争#9.5#最美的谎言。
星际穿越#克里斯托弗·诺兰#马修·麦康纳#2014#美国 英国 加拿大#剧情 科幻 冒险#9.4#爱是一种力量,让我们超越时空感知它的存在。
盗梦空间#克里斯托弗·诺兰#莱昂纳多·迪卡普里奥#2010#美国 英国#剧情 科幻 悬疑 冒险#9.4#诺兰给了我们一场无法盗取的梦。
楚门的世界#彼得·威尔#金·凯瑞#1998#美国#剧情 科幻#9.4#如果再也不能见到你,祝你早安,午安,晚安。
辛德勒的名单#史蒂文·斯皮尔伯格#连姆·尼森#1993#美国#剧情 历史 战争#9.5#拯救一个人,就是拯救整个世界。
忠犬八公的故事#莱塞·霍尔斯道姆#理查·基尔#2009#美国 英国#剧情#9.4#永远都不能忘记你所爱的人。
海上钢琴师#朱塞佩·托纳多雷#蒂姆·罗斯#1998#意大利#剧情 音乐#9.3#每个人都要走一条自己坚定了的路,就算是粉身碎骨。 
三傻大闹宝莱坞#拉库马·希拉尼#阿米尔·汗#2009#印度#剧情 喜剧 爱情 歌舞#9.2#英俊版憨豆,高情商版谢耳朵。
放牛班的春天#克里斯托夫·巴拉蒂#让#2004#法国 瑞士 德国#剧情 音乐#9.3#天籁一般的童声,是最接近上帝的存在。 
机器人总动员#安德鲁·斯坦顿#本·贝尔特#2008#美国#科幻 动画 冒险#9.3#小瓦力,大人生。
疯狂动物城#拜伦·霍华德#金妮弗·#2016#美国#喜剧 动画 冒险#9.2#迪士尼给我们营造的乌托邦就是这样,永远善良勇敢,永远出乎意料。
无间道#刘伟强#刘德华#2002#中国香港#剧情 犯罪 惊悚#9.3#香港电影史上永不过时的杰作。
控方证人#比利·怀尔德#泰隆·鲍华#1957#美国#剧情 犯罪 悬疑#9.6#比利·怀德满分作品。
大话西游之大圣娶亲#刘镇伟#周星驰#1995#中国香港 中国大陆#喜剧 爱情 奇幻 古装#9.2#一生所爱。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1486220.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【网络安全】CrowdStrike 的 Falcon Sensor 软件导致 Linux 内核崩溃

CrowdStrike的Falcon Sensor软件,上周导致大量Windows电脑出现蓝屏故障,现在还被发现Linux内核系统崩溃也与CrowdStrike有关。 六月份,Red Hat警告其客户在使用版本为5.14.0-427.13.1.el9_4.x86_64的内核启动后,由Falcon Sensor进…

PostgreSQL异常:An I/O error occurred while sending to the backend

在使用PostgreSQL数据库批量写入数据的时候,遇到了一个问题,异常内容如下: Cause: org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend.报错内容 报错提示1 Caused by: org.postgresql.util.PSQLExc…

go-kratos 学习笔记(3) google buf 管理proto

google buf 管理proto,以及从新归档文件的目录结构 什么是 BSR? BSR 将 Protobuf 文件作为版本化模块进行存储和管理,以便个人和组织可以轻松使用和发布他们的 API。 BSR 带有可浏览的 UI、依赖项管理、API 验证、版本控制、生成的文档以及…

Linux系统安装Cobol语言及IBM大型机模拟软件Hercules

COBOL(Common Business-Oriented Language)起源于50年代中期,是一种面向过程的高级程序设计语言,主要用于商业和数据处理领域。经过不断发展和标准化,已成为国际上应用最广泛的商业编程语言之一,在某red书上…

MATLAB基础:字符串、元胞数组

今天我们继续学习MATLAB中的字符串、元胞和结构 字符串 由于MATLAB是面向矩阵的,所以字符串的处理可以用矩阵的形式实现 字符串的赋值与引用 假设变量a,将用单引号引起来的字符串赋值给它, a清心明目, b(a[4;-1;1]) 在这里,…

Mysql注意事项(二)

Mysql注意事项(二) 最近回顾了一下MySQL,发现了一些MySQL需要注意的事项,同时也作为学习笔记,记录下来。—2020年06月11日 接上一篇Mysql注意事项(一) 9、分组数据 GROUP BY 规定&#xff…

英伟达、Mistral AI 开源企业级大模型,120亿参数、可商用

全球AI领导者英伟达(Nvidia)和著名开源大模型平台Mistral.ai联合开源了,企业级大模型Mistral NeMo 12B。(以下简称“MN 12B”) 据悉,MN 12B一共有基础和指令微调两种模型,支持128K上下文长度&a…

Spark-第一周

一、spark是什么 Spark是一种快速、通用、可扩展的大数据分析引擎 2009年诞生于加州大学伯克利分校AMPLab,2010年开源,2013年6月成为Apache孵化项目,2014年2月成为Apache顶级项目。 目前,Spark生态系统已经发展成为一个包含多个…

大语言模型-Bert-Bidirectional Encoder Representation from Transformers

一、背景信息: Bert是2018年10月由Google AI研究院提出的一种预训练模型。 主要用于自然语言处理(NLP)任务,特别是机器阅读理、文本分类、序列标注等任务。 BERT的网络架构使用的是多层Transformer结构,有效的解决了长…

如何用JavaScript实现视频观看时间追踪

在网页开发中,跟踪用户与多媒体内容(如视频)的互动是一项常见需求。无论是教育平台、数据分析,还是用户参与度统计,监控用户如何观看视频内容都能提供宝贵的见解。这篇文章将探索如何使用JavaScript实现视频播放时长的…

DC系列靶场---DC 2靶场的渗透测试(一)

信息收集 Nmap扫描 nmap -sV -p- -sC -T4 172.30.1.141 域名解析 echo 172.30.1.141 dc-2 >> /etc/hosts 目录枚举 gobuster dir -u http://172.30.1.141 -w work/lab/CTF/ATT_CK_01/SecLists-master/Discovery/Web-Content/big.txt -x .php,.rar,.html,.zip -t 20 -b…

【ELK】window下ELK的安装与部署

ELK的安装与部署 1. 下载2. 配置&启动2.1 elasticsarch2.1.1 生成证书2.1.2 生成秘钥2.1.3 将凭证迁移到指定目录2.1.4 改配置2.1.5 启动2.1.6 访问测试2.1.7 生成kibana账号 2.2 kibana2.2.1 改配置2.2.2 启动2.2.3 访问测试 2.3 logstash2.3.1 改配置2.3.2 启动 2.4 file…

ElMessage自动引入,样式缺失和ts esline 报错问题解决

一. 环境 "unplugin-auto-import": "^0.17.6", "vue": "^3.3.8", "vite": "^5.0.0", "typescript": "^5.2.2",二. ElMessage样式缺失问题. 以下有两种解决方法 方法一: 配置了自动引用后…

移动UI:运动风格具备什么特征,如何识别。

在移动UI设计中,具备以下特征可以归为运动风格: 1. 流畅的动画效果: 运动风格的UI设计通常会运用流畅的动画效果,例如过渡动画、元素的缓动效果等,以增强用户体验和吸引用户的注意力。 2. 动态的交互设计&#xff1a…

八股文之java基础

jdk9中对字符串进行了一个什么优化? jdk9之前 字符串的拼接通常都是使用进行拼接 但是的实现我们是基于stringbuilder进行的 这个过程通常比较低效 包含了创建stringbuilder对象 通过append方法去将stringbuilder对象进行拼接 最后使用tostring方法去转换成最终的…

python+onlyoffice+vue3项目实战20240722笔记,环境搭建和前后端基础代码

开发后端 先创建data目录,然后在data目录下创建一个test.docx测试文档。 后端代码: import json import req import api from api import middleware, PlainTextResponseasync def doc_callback(request):data = await api.req.get_json(request)print("callback ==…

PingCAP 王琦智:下一代 RAG,tidb.ai 使用知识图谱增强 RAG 能力

导读 随着 ChatGPT 的流行,LLMs(大语言模型)再次进入人们的视野。然而,在处理特定领域查询时,大模型生成的内容往往存在信息滞后和准确性不足的问题。如何让 RAG 和向量搜索技术在实际应用中更好地满足企业需求&#…

java之利用二维数组来计算年利润和每个季度的营业额

public class TwodimensionDemo2 {public static void main(String[] args) {//创建二维数组来存储数据int [][]yearArrArr{{22,66,44},{77,33,88},{25,45,65},{11,66,99}};int yearSum0;//遍历二维数组&#xff0c;得到每一个一维数组并求和for (int i 0; i < yearArrArr.…

Nginx 怎样处理请求的重试机制?

&#x1f345;关注博主&#x1f397;️ 带你畅游技术世界&#xff0c;不错过每一次成长机会&#xff01; 文章目录 Nginx 怎样处理请求的重试机制&#xff1f;一、为何需要重试机制&#xff1f;二、Nginx 中的重试机制原理三、Nginx 重试机制的配置参数四、Nginx 重试机制的实际…

新手小白的pytorch学习第十弹----多类别分类问题模型以及九、十弹的练习

目录 1 多类别分类模型1.1 创建数据1.2 创建模型1.3 模型传出的数据1.4 损失函数和优化器1.5 训练和测试1.6 衡量模型性能的指标 2 练习Exercise 之前我们已经学习了 二分类问题&#xff0c;二分类就像抛硬币正面和反面&#xff0c;只有两种情况。 这里我们要探讨一个 多类别…