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

简介: 我们以前写JavaScript的代码时,在遇到了发送请求时,都是需要去await的。但是为什么Python代码不需要这样做呢?这就是因为JavaScript是异步的,Python是同步的。JavaScript就需要使用关键词await将异步代码块变为同步代码。

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 movies
  else:
    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等)
  • 传递请求参数(查询字符串、请求体等)
  1. 发送HTTP请求:
  • 通过网络协议(如TCP/IP)将请求发送到目标网站的服务器
  1. 接收响应:
  • 服务器接收到请求后,会生成相应的HTML页面作为响应内容
  • 将HTML页面通过网络协议返回给发起请求的客户端
  1. 获取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将异步代码块变为同步代码。


相关文章
|
4天前
|
数据采集 JavaScript Android开发
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
29 7
【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
|
4天前
|
JavaScript 搜索推荐 Android开发
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
23 8
【01】仿站技术之python技术,看完学会再也不用去购买收费工具了-用python扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-客户的麻将软件需要下载落地页并且要做搜索引擎推广-本文用python语言快速开发爬取落地页下载-优雅草卓伊凡
|
4天前
|
人工智能 测试技术 数据处理
通义灵码 2.0 体验报告:Deepseek 加持下的 Python 开发之旅
通义灵码 2.0 体验报告:Deepseek 加持下的 Python 开发之旅
57 11
|
7天前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
蘑菇识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了9种常见的蘑菇种类数据集【"香菇(Agaricus)", "毒鹅膏菌(Amanita)", "牛肝菌(Boletus)", "网状菌(Cortinarius)", "毒镰孢(Entoloma)", "湿孢菌(Hygrocybe)", "乳菇(Lactarius)", "红菇(Russula)", "松茸(Suillus)"】 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,
51 11
基于Python深度学习的【蘑菇识别】系统~卷积神经网络+TensorFlow+图像识别+人工智能
|
8天前
|
API Python
python泛微e9接口开发
通过POST请求向指定IP的API注册设备以获取`secrit`和`spk`。请求需包含`appid`、`loginid`、`pwd`等头信息。响应中包含状态码、消息及`secrit`(注意拼写)、`secret`和`spk`字段。示例代码使用`curl`命令发送请求,成功后返回相关信息。
30 5
|
25天前
|
安全 Linux 网络安全
利用Python脚本自动备份网络设备配置
通过本文的介绍,我们了解了如何利用Python脚本自动备份网络设备配置。该脚本使用 `paramiko`库通过SSH连接到设备,获取并保存配置文件。通过定时任务调度,可以实现定期自动备份,确保网络设备配置的安全和可用。希望这些内容能够帮助你在实际工作中实现网络设备的自动化备份。
51 14
|
1月前
|
人工智能 Python
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
【02】做一个精美的打飞机小游戏,python开发小游戏-鹰击长空—优雅草央千澈-持续更新-分享源代码和游戏包供游玩-记录完整开发过程-用做好的素材来完善鹰击长空1.0.1版本
56 7
|
1月前
|
前端开发 搜索推荐 编译器
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
111 34
【01】python开发之实例开发讲解-如何获取影视网站中经过保护后的视频-用python如何下载无法下载的视频资源含m3u8-python插件之dlp-举例几种-详解优雅草央千澈
|
1月前
|
人工智能 编译器 Python
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
41 0
python已经安装有其他用途如何用hbuilerx配置环境-附带实例demo-python开发入门之hbuilderx编译器如何配置python环境—hbuilderx配置python环境优雅草央千澈
|
2月前
|
SQL 安全 网络安全
网络安全与信息安全:知识分享####
【10月更文挑战第21天】 随着数字化时代的快速发展,网络安全和信息安全已成为个人和企业不可忽视的关键问题。本文将探讨网络安全漏洞、加密技术以及安全意识的重要性,并提供一些实用的建议,帮助读者提高自身的网络安全防护能力。 ####
86 17

热门文章

最新文章

  • 1
    当面试官再问我JS闭包时,我能答出来的都在这里了。
    47
  • 2
    【02】仿站技术之python技术,看完学会再也不用去购买收费工具了-本次找了小影-感觉页面很好看-本次是爬取vue需要用到Puppeteer库用node.js扒一个app下载落地页-包括安卓android下载(简单)-ios苹果plist下载(稍微麻烦一丢丢)-优雅草卓伊凡
    29
  • 3
    Node.js 中实现多任务下载的并发控制策略
    34
  • 4
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 5
    【JavaScript】深入理解 let、var 和 const
    49
  • 6
    【04】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架二次开发准备工作-以及建立初步后端目录菜单列-优雅草卓伊凡商业项目实战
    47
  • 7
    【03】Java+若依+vue.js技术栈实现钱包积分管理系统项目-若依框架搭建-服务端-后台管理-整体搭建-优雅草卓伊凡商业项目实战
    57
  • 8
    【02】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-ui设计图figmaUI设计准备-figma汉化插件-mysql数据库设计-优雅草卓伊凡商业项目实战
    57
  • 9
    如何通过pm2以cluster模式多进程部署next.js(包括docker下的部署)
    72
  • 10
    【01】Java+若依+vue.js技术栈实现钱包积分管理系统项目-商业级电玩城积分系统商业项目实战-需求改为思维导图-设计数据库-确定基础架构和设计-优雅草卓伊凡商业项目实战
    57
  • 推荐镜像

    更多