Python 爬虫之简单的爬虫(三)

爬取动态网页(上)


文章目录

  • 爬取动态网页(上)
  • 前言
  • 一、大致内容
  • 二、基本思路
  • 三、代码编写
    • 1.引入库
    • 2.加载网页数据
    • 3.获取指定数据
  • 总结


前言

之前的两篇写的是爬取静态网页的内容,比较简单。接下来呢给大家讲一下如何去爬取动态网页的数据。同样,上两篇用的Python库在这里也是用不了滴。


`

一、大致内容

以此网址为例:豆瓣2022年度电影榜单
通过使用selenium相关技术来爬取相应的片名、人物、产地、评分等信息。

二、基本思路

  • 第一步:打开网页,右键在指定的数据类型上,点击检查
  • 第二步:网页就会弹出一个窗口,并定位到相应的网页代码的位置上。

在这里插入图片描述

  • 第三步:根据数据前面的div、class等标签参数,来进行代码的编写,获取一系列的同类数据。
  • 第四步:对获取的数据进行整理,保存成我们便于查看的格式,比如excel文档。(时间来不及了。。这个会在《爬取动态网页(下)》上写)

三、代码编写

1.引入库

代码如下:

from selenium import webdriver
from selenium.webdriver.common.by import By
import time

2.加载网页数据

代码如下:

driver = webdriver.Firefox()driver.get("https://movie.douban.com/annual/2022/?fullscreen=1&source=movie_navigation")time.sleep(5)driver.execute_script('window.scrollTo(0, document.body.scrollHeight);')
  1. driver = webdriver.Firefox(): 这一行创建了一个新的 Firefox WebDriver 实例。WebDriver 是一个接口,允许你通过编程方式控制浏览器的行为。
  2. driver.get(): 这一行使用 WebDriver 让 Firefox 浏览器打开指定的 URL(在这个例子中是豆瓣电影 2022 年度榜单页面)。
  3. time.sleep(): 这一行会让 Python程序暂停执行5秒。这个暂停是为了给网页加载时间,确保所有内容都已完全加载到浏览器中。在实际操作中,可能需要根据网页的实际加载速度来调整这个等待时间。
  4. driver.execute_script(): 这段代码的作用是滚动浏览器窗口到底部。window.scrollTo(x, y) 是一个 JavaScript方法,它接受两个参数:x 表示水平滚动位置,y 表示垂直滚动位置。在这里,0表示保持水平滚动位置不变,document.body.scrollHeight表示将垂直滚动位置设置为文档的总高度,从而实现滚动到底部的效果。

这段代码的主要目的是打开豆瓣电影年度榜单页面,并滚动到页面底部,为了确保所有内容都已经加载完成。


3.获取指定数据

代码如下:

# 获取四大影视类型标题
comment_Titles = driver.find_elements(by=By.CSS_SELECTOR, value='.module-top10-grid-chart-title')
for comment in comment_Titles:print(comment.text)# 获取每个影视类型里的第一名片名
which_mo_list = driver.find_elements(by=By.CSS_SELECTOR, value='.subject-top-title')
for each_mo in which_mo_list:movie_title = each_mo.get_attribute('title')print(movie_title)# 获取每个影视类型里的第一名评分
movies_top_scores_list = driver.find_elements(by=By.CSS_SELECTOR, value='.rating-card-value')
for movie_top_score in movies_top_scores_list:score = movie_top_score.textprint(score)# 获取所有影片的人物信息
persons_list = driver.find_elements(by=By.CSS_SELECTOR, value='.subject-credit')
for person in persons_list:person_title = person.find_elements(by=By.TAG_NAME, value='p')for title in person_title:print(title.text)# 获取影片的产地(每个影视类型里的第一名除外)
addresses_list = driver.find_elements(by=By.CSS_SELECTOR, value='.subjects-rank-credits > div:nth-child(2)')
for addresses in addresses_list:address_text = addresses.textprint(address_text)# 获取影片评分(每个影视类型里的第一名除外)
movies_scores_list = driver.find_elements(by=By.CSS_SELECTOR, value='.subjects-rank-rating')
for movie_score in movies_scores_list:score = movie_score.textprint(score)

乍一看有很多代码。仔细看其实都是一样的格式:先是find它们在哪里,然后把它们保存成一个列表,最后使用for结构遍历打印出来。

以其中一个举例(# 获取四大影视类型标题)解释一下:

  1. comment_Titles = driver.find_elements(by=By.CSS_SELECTOR,value=‘.module-top10-grid-chart-title’): 这一行使用 WebDriver 的find_elements 方法查找页面上所有匹配给定 CSS 选择器的元素。在这个例子中,CSS 选择器是.module-top10-grid-chart-title,它会匹配所有具有module-top10-grid-chart-title 类名的 HTML 元素。find_elements方法会返回一个包含所有匹配元素的列表。
  2. for comment in comment_Titles:: 这一行开始一个 for 循环,遍历 comment_Titles列表中的每个元素。在每次循环中,当前元素会被赋值给变量 comment。
  3. print(comment.text): 这一行在循环内部执行,它使用 text 属性获取当前 comment元素中的文本内容,并将其打印到控制台。text 属性返回元素及其所有子元素的纯文本内容(不包括 HTML 标签)。

总的来说,这两行代码的作用是从页面上找到所有具有 module-top10-grid-chart-title 类名的元素,并打印出它们的文本内容。这些元素是豆瓣电影年度榜单中的四大影视类型的标题。

给大家看一下效果图吧。
在这里插入图片描述


总结

`

到这里已经完成一大半了。剩下的就是对数据的处理,如何让它们看起来比较舒服。由于时间问题,剩下的下回见各位。在这里插入图片描述)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

若依 ruoyi-vue3 集成aj-captcha实现滑块、文字点选验证码

目录 0. 前言0.1 说明 1. 后端部分1.1 添加依赖1.2. 修改 application.yml1.3. 新增 CaptchaRedisService 类1.4. 添加必须文件1.5. 移除不需要的类1.6. 修改登录方法1.7. 新增验证码开关获取接口1.8. 允许匿名访问 2. 前端部分(Vue3)2.1. 新增依赖 cryp…

python【matplotlib】鼠标拖动滚动缩放坐标范围和拖动图例共存

背景 根据前面的博文: python【matplotlib】画图鼠标缩放拖动动态改变坐标轴范围 和Python【Matplotlib】图例可拖动改变位置 两个博文,博主考虑了一下,如何将两者的功能结合起来,让二者共存。 只需根据Python【Matplotlib】鼠标…

PIC单片机项目(4)——基于PIC16F877A的温度光照检测装置

1.功能设计 基于PIC16F877A单片机,使用DS18B20进行温度测量,使用光敏电阻进行光照测量,将测量值实时显示在LCD1602屏幕上,同时可以设定光照阈值和温度阈值。当温度大于阈值,则蜂鸣器报警,当光照小于阈值&am…

ES-脚本

脚本 简单使用 POST product/_update/2 {"script": {"source": "ctx._source.salary1" #将薪水字段的值 1} }预定义变量 POST product/_update/2 {"script": {"lang": "painless","source": "…

[C++] 多态(下) -- 多态原理 -- 动静态绑定

文章目录 1、多态原理2、动态绑定和静态绑定3、单继承和多继承关系的虚函数表3.1 单继承中的虚函数表5.2 多继承中的虚函数表 上一篇文章我们了解了虚函数表,虚函数表指针,本篇文章我们来了解多态的底层原理,更好的理解多态的机制。 [C] 多态…

flask搞个简单登录界面

登录界面 直接放上login.html模板&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Lo…

windows 安装jenkins

下载jenkins 官方下载地址&#xff1a;Jenkins 的安装和设置 清华源下载地址&#xff1a;https://mirrors.tuna.tsinghua.edu.cn/jenkins/windows-stable/ 最新支持java8的版本时2.346.1版本&#xff0c;在清华源中找不到&#xff0c;在官网中没找到windows的下载历史&#xff…

Nginx七层代理,四层代理 + Tomcat多实例部署

目录 1.tomcat多实例部署 准备两台虚拟机 进入pc1 pc2同时安装jdk 进入pc1 pc2安装tomcat PC1配置&#xff08;192.168.88.50&#xff09; 安装tomcat多实例 tomcat2中修改端口 启动tomcat1 tomcat2 分别在三个tomcat服务上部署jsp的动态页面 2.nginx的七层代理&…

记录一次云服务器被攻击事件

今天去登录华为云平台的时候&#xff0c;发现服务器的cpu涨到了百分之九十九&#xff0c;这个也太不正常了&#xff0c;我自己就只部署了一个页面&#xff0c;怎么会飚这么高呢&#xff1f; 然后&#xff0c;我就去找原因&#xff0c;使用top命令&#xff0c;去查看到底是谁占用…

JDK21+HADOOP3.2.2+Windows安装步骤

哈哈哈 最近转战大数据这块了&#xff0c;分享一下hadoop3.2.2的安装步骤 借鉴了不少大佬的文章&#xff0c;如有雷同&#xff0c;都是大佬们的 1.JDK安装 我选择的是JDK21 以下是下载网址和截图&#xff0c;这个没有太多的&#xff0c;一般下载最新的就可以 JDK: Java Down…

【C语言】自定义类型:结构体深入解析(一)

&#x1f308;write in front :&#x1f50d;个人主页 &#xff1a; 啊森要自信的主页 ✏️真正相信奇迹的家伙&#xff0c;本身和奇迹一样了不起啊&#xff01; 欢迎大家关注&#x1f50d;点赞&#x1f44d;收藏⭐️留言&#x1f4dd;>希望看完我的文章对你有小小的帮助&am…

编辑器Sublime text 常用快捷命令 列模式 替换空行

平替notepad 下载可取官网 www.sublimetext.com 据说可以无限试用&#xff0c;没有功能限制 1、快速删除空行 ctrl h选择正则表达式 .*Find输入&#xff1a; ^(\t)*$\nReplace输入&#xff1a;点击Replace All 2、快速选择指定字符 用鼠标选中alt f3修改 3、列编辑模式 ct…

WEB渗透—PHP反序列化(五)

Web渗透—PHP反序列化 课程学习分享&#xff08;课程非本人制作&#xff0c;仅提供学习分享&#xff09; 靶场下载地址&#xff1a;GitHub - mcc0624/php_ser_Class: php反序列化靶场课程&#xff0c;基于课程制作的靶场 课程地址&#xff1a;PHP反序列化漏洞学习_哔哩…

win10环境下git安装和基础操作

简述 关于git的作用就不多赘述了&#xff0c;配合GitHub&#xff0c;达到方便人们日常项目维护和管理&#xff0c;每一次项目增删改查都可以看的清清楚楚&#xff0c;方便团队协作和个人项目日常维护。 下载git 首先我们自然是要到官网下载git&#xff0c;下载地址为https:/…

无框架Java转go语言写http与tcp请求

项目地址 https://github.com/cmdch2017/http_tcpServer 项目结构 如何快速上手 http篇 1、controller包就相当于RestController&#xff0c;这里返回了一个Person对象&#xff0c;当你需要新建一个接口时&#xff0c;再新写一个func仿照下面的方法就行了 package control…

创建型模式之抽象工厂模式

一、概述 1、抽象工厂模式&#xff1a;提供一个创建一系列相关或相互依赖对象的接口&#xff0c;而无需指定它们具体的类。 2、抽象工厂模式&#xff1a;一个工厂可以生产一系列产品&#xff08;一族产品&#xff09;&#xff0c;极大减少了工厂类的数量 3、抽象工厂模式&am…

SpringBoot配置mysql加密之Druid方式

一、导入Druid依赖 <dependency><groupId>com.alibaba</groupId><artifactId>druid-spring-boot-starter</artifactId><version>1.1.22</version> </dependency>二、生成密文 方式1. 找到存放druid jar包的目录 1-1、在目录…

局域网其他pc如何访问宿主机虚拟机IP?

文章目录 背景贝瑞蒲公英设置虚拟机网络连接测试 背景 使用贝瑞蒲公英异地组网&#xff0c;将家里的pc作为pgsql服务器在公司使用&#xff0c;但是虚拟机的ip和端口访问不了 贝瑞蒲公英 设置虚拟机网络 就是添加端口转发规则 连接测试 公网内其他pc连接测试 可以看到已经连接成…

教你玩转Shopify独立站!六招运营技巧不可错过

作为一个新手卖家&#xff0c;想要在 Shopify 上运营自己的独立站&#xff0c;可能会感到有些困惑。不过&#xff0c;只要掌握了一些技巧&#xff0c;就可以轻松上手。今天就为大家介绍六个运营 Shopify 独立站的技巧&#xff0c;帮助大家更好玩转 Shopify 独立站&#xff01; …

隐私计算介绍

这里只对隐私计算做一些概念性的浅显介绍&#xff0c;作为入门了解即可 目录 隐私计算概述隐私计算概念隐私计算背景国外各个国家和地区纷纷出台了围绕数据使用和保护的公共政策国内近年来也出台了数据安全、隐私和使用相关的政策法规 隐私计算技术发展 隐私计算技术安全多方计…