网络爬虫开发:JavaScript与Python特性的小差异

JavaScript

JavaScript具有以下一些主要特点:

  • 动态类型: JavaScript是一种动态类型语言,变量可以存储任意类型的数据,无需事先声明变量的类型。
  • 事件驱动:JavaScript主要用于处理用户在浏览器中的各种交互事件,如单击、鼠标移动、键盘输入等。
  • 面向对象:JavaScript虽然不是一种严格的面向对象语言,但它支持对象、继承等面向对象编程概念。
  • 函数式编程:JavaScript支持函数式编程,函数可作为一等公民,可以赋值给变量、作为参数传递给其他函数。
  • 异步编程:JavaScript擅长异步编程,可以利用回调函数、Promise、async/await等机制来处理异步操作。

Python

Python是一种通用编程语言:

  • 数据分析和科学计算:Python拥有丰富的数据分析和科学计算库,如NumPy、Pandas、Matplotlib等,广泛应用于数据挖掘、机器学习等场景。
  • 人工智能和机器学习:Python在人工智能和机器学习领域非常流行,有TensorFlow、PyTorch等强大的深度学习库。
  • Web开发:Python有Django、Flask等流行的Web框架,可用于开发动态网站和Web应用程序。
  • 系统编程和自动化:Python擅长系统编程和自动化任务,可用于编写脚本、系统管理等。
  • 数据可视化:Python有丰富的可视化库,如Matplotlib、Seaborn,可用于生成各种图表和可视化效果。
  • 教育和科研:Python简单易学,被广泛应用于编程教育和科学研究领域。

对比

Python更加通用和易学,适合初学者和从事数据分析、机器学习等工作的开发者;而JavaScript则更擅长web开发和交互式应用程序。

爬虫代码书写

这里主要讲解python的爬虫代码书写,我们使用colab平台进行代码的编写。

Google Colab(Colaboratory)是一个基于浏览器的免费Jupyter Notebook环境,它为用户提供了一个免费的云端计算平台,用于编写和运行代码,尤其适合机器学习和数据科学领域的开发和研究。

首先我们先安装依赖。

# python 请求库
! pip install requests
# python dom 查找
! pip install beautifulsoup4

接下来我们就开始去编写获取数据的代码,这里我们通过豆瓣电影排行榜 (douban.com)这个链接去获取电影的数据。

首先看以下代码:

# 引入请求库
import requests
from bs4 import BeautifulSoup# 爬取url里的电影数据
def fetch_movie_list(url):headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'}response = requests.get(url,headers = headers)if(response.status_code == 200):soup = BeautifulSoup(response.text,'html.parser')movie_list = []movies = soup.select('#wrapper #content .article .item')print(len(movies))all_movies_text = ''.join([movie.prettify() for movie in movies])print(all_movies_text)print(movies)# 拿到数据就交给ai分析return movieselse:print("失败")url = "https://movie.douban.com/chart"# 爬取url里的电影数据
movies = fetch_movie_list(url)

这段代码我们就能够获取到相应的html数据了。

解释一下这段代码之前我们先聊一下前置知识。

向一个网站发送请求,到底得到了什么?

向一个网站发送请求的本质就是获取该网站返回的HTML页面。这个过程可以分为以下几个步骤:

1. 构建HTTP请求:

  • 确定请求方法(GET、POST、PUT、DELETE等)
  • 设置请求头(User-Agent、Accept、Referer等)
  • 传递请求参数(查询字符串、请求体等)

2. 发送HTTP请求:

  • 通过网络协议(如TCP/IP)将请求发送到目标网站的服务器

3. 接收响应:

  • 服务器接收到请求后,会生成相应的HTML页面作为响应内容
  • 将HTML页面通过网络协议返回给发起请求的客户端

4. 获取HTML页面:

  • 客户端接收到服务器返回的HTML页面
  • 解析和处理这个HTML页面,提取所需的信息

这个过程中,获取HTML页面是关键目标。HTML页面包含了网站的结构、内容和样式信息,通过解析和分析这个HTML。

既然我们向一个网站发送请求可以获取到html结构,这不就代表着我们可以通过分析html来获取数据。

接下来就继续分析上面的代码。

讲解一下:

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36 Edg/125.0.0.0'
}

这个请求头其实就是告诉网站,我是真人,不是程序

  • Mozilla/5.0 是一个标准的浏览器标识前缀。
  • (Windows NT 10.0; Win64; x64) 表示操作系统是 Windows 10 64 位版本。
  • AppleWebKit/537.36 说明使用了基于 WebKit 537.36 版本的渲染引擎。
  • (KHTML, like Gecko) 表示浏览器内核与 KHTML 和 Gecko 引擎相似。
  • Chrome/125.0.0.0 说明浏览器是 Google Chrome 125.0.0.0 版本。
  • Safari/537.36 也表示使用了 Safari 浏览器的一些特性。
  • Edg/125.0.0.0 则表示使用了 Microsoft Edge 125.0.0.0 版本。

那么我们要如何获取到自己浏览器的这份User-Agent数据呢?

很简单,只需要在浏览器的控制台输入navigator.userAgent就可以获取到了

继续分析,我们以前写JavaScript的代码时,在遇到了发送请求时,都是需要去await的。

但是为什么Python代码不需要这样做呢?

这就是因为JavaScript是异步的,Python是同步的。

JavaScript就需要使用关键词await将异步代码块变为同步代码。

作者:爱吃土豆丝呦
链接:https://juejin.cn/post/7391699424793591845

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

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

相关文章

什么是大数据信用?它的作用有哪些?怎么查询大数据?

在金融行业中,风险管理是至关重要的一环。传统的信用评估方法主要基于借款人的财务状况和信用历史,但这些信息往往无法全面反映借款人的信用状况。大数据信用的出现为金融风控提供了新的解决方案。 首先,大数据信用可以为金融机构提供更全面的…

jmeter持续学习之---控制器

IF控制器 下面这种写法jmeter不推荐有性能的问题 jmeter推荐勾选上的这种写法 使用"Interpret Condition as Variable Expression"工具的性能要好一些 循环控制器 ForEach控制器 与用户定义的变量或者正则表达式提取器配合使用,循环读取。用户定义的变量或者正则…

C语言-分支与循环(2)

目录 1、while循环 1.1 if 和 while 的对比 1.2 while 语句的执行流程 6.3 while循环简单例题 2、for 循环 2.1 语法形式 2.2 for循环与while循环对比 2.3 for循环的执行流程 2.4 for循环的简单例题 2.5 扩展:for循环的初始化,判断,…

django学习入门系列之第四点《图标》

文章目录 图标往期回顾 图标 图标网站: Font Awesome,一套绝佳的图标字体库和CSS框架 (dashgame.com) bootstrap提供的不多 注意,要用框架启动,但用html启动的话是用不了的(图标启动不了) 如何使用 如果…

DAMA学习笔记(六)-数据安全

1.引言 数据安全包括安全策略和过程的规划、建立与执行,为数据和信息资产提供正确的身份验证、授权、访问和审计。数据安全实践的目标是根据隐私和保密法规、合同协议和业务要求来保护信息资产。这些要求来自以下几个方面: 1)利益相关方: 应识别利益相关…

YOLO--置信度(超详细解读)

YOLO(You Only Look Once)算法中的置信度(Confidence)是一个关键概念,用于评估模型对预测框内存在目标对象的信心程度以及预测框对目标对象位置的准确性。 一、置信度的定义 数值范围:置信度是一个介于0和…

vscode 打开远程bug vscode Failed to parse remote port from server output

vscode 打开远程bug vscode Failed to parse remote port from server output 原因如图: 解决:

网络滤波器、EMI滤波器与EMC滤波器在电子元器件中的分类关系

在电子工程领域,滤波器作为关键的电子元器件,广泛应用于信号处理、电磁兼容性和电磁干扰抑制等方面。本文将详细介绍网络滤波器、EMI滤波器和EMC滤波器的基本概念、工作原理及其在电子元器件中的分类关系。 一、网络滤波器 网络滤波器是一种通过处理信号…

脸书登录指南:如何在同一台设备登录多个Facebook账号?

海外社媒营销人员和跨境卖家现在越来越依赖社交媒体平台来拓展业务和接触潜在客户,尤其是Facebook。然而,在进行脸书登录时,你可能会问:如何在同一台设备上登录多个Facebook账号,而不违反Facebook的使用条款&#xff1…

Android 性能优化之卡顿优化

文章目录 Android 性能优化之卡顿优化卡顿检测TraceView配置缺点 StricktMode配置违规代码 BlockCanary配置问题代码缺点 ANRANR原因ANRWatchDog监测解决方案 Android 性能优化之卡顿优化 卡顿检测 TraceViewStricktModelBlockCanary TraceView 配置 Debug.startMethodTra…

vivado 2019.2/modelsim SE-64 2019.2联合仿真

参考链接 需要修改的地方: 编译时几个VHDL的库会报错,将language改为verilogfamily只选择当前板子(artix-7),速度会更快,错误率更低compile library path最好选择vivado安装路径下的位置,很久之…

怎么创一个新的vue3项目

创建一个新的Vue 3项目可以通过多种方式,以下是基于Vue CLI(命令行界面)和Vue官方新的脚手架工具create-vue的详细步骤。 使用Vue CLI创建Vue 3项目 安装Vue CLI: 确保你已经安装了Node.js(建议使用LTS版本&#xff…

用于大规模图像识别的深度卷积网络

概述 论文地址:https://arxiv.org/pdf/1409.1556.pdf 这项研究探讨了卷积网络深度对图像识别准确性的影响。重要的是,对具有小型卷积滤波器的网络进行的评估表明,具有 16-19 个权重层的深度网络的性能优于传统配置。这些结果使得该模型在20…

把ros消息转换成中文输出

把ros消息转换成中文输出 c实现 发布 //发布性能评估数据 /trilateration_time_log void publishTrilaterationLog(const int reflectorPanelPoints_size,const double duration_count,const std::string& resultType,const std::string& resultChineseMessage,cons…

C#绘制含流动块的管道

1,效果。 2,绘制技巧。 1,流动块的实质是使用Pen的自定义DashStyle绘制的线,并使用线的偏移值呈现出流动的效果。 Pen barPen new Pen(BarColor, BarHeight);barPen.DashStyle DashStyle.Custom;barPen.DashOffset startOffse…

MySQL-日志-优化

目录 介绍一下mysql 的日志 redo log 和binlog 的区别及应用场景 redo log 和 binlog 在恢复数据库有什么区别? redo log 是怎么实现持久化的? redo log除了崩溃恢复还有什么其他作用? (顺序写) redo log 怎么刷入磁盘的知道吗? 两阶…

重塑水利未来:智慧水利解决方案的探索与实践,从物联网、大数据到人工智能,科技如何赋能水利行业,实现智慧化管理与决策

本文关键词:智慧水利、智慧水利工程、智慧水利发展前景、智慧水利技术、智慧水利信息化系统、智慧水利解决方案、数字水利和智慧水利、数字水利工程、数字水利建设、数字水利概念、人水和协、智慧水库、智慧水库管理平台、智慧水库建设方案、智慧水库解决方案、智慧…

如何通过3D开发组件HOOPS增强Navisworks数据访问?

随着建筑信息模型(BIM)和建筑、工程和施工(AEC)市场的快速发展,对Navisworks支持的需求也在不断增长。特别是在多个公司赞助Navisworks项目的大环境下,HOOPS组件的支持显得尤为重要。这些公司包括一家大型电…

【多模态学习笔记二】MINIGPT-4论文阅读

MINIGPT-4:ENHANCING VISION-LANGUAGE UNDERSTANDING WITH ADVANCED LARGE LANGUAGE MODELS 提出的MiniGPT-4使用一个投影层,将冻结的视觉编码器与冻结的先进的LLM Vicuna对齐。我们的工作首次揭示,将视觉特征与先进的大型语言模型正确对齐可以具有GPT-4所展示的许多先进的多…

【14】Github Copilot环境搭建

环境搭建 这里以Visual Studio Code为例,安装好vs code,打开扩展侧边菜单栏,搜索“Github Copilot”,会出现如下图的两个插件,点击安装第一个,另一个会附带一起安装,然后弹出提示重新启动vs co…