写点什么

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

  • 2024-07-17
    湖南
  • 本文字数:2097 字

    阅读完需:约 7 分钟

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 requestsfrom 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 来获取数据。


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


讲解一下:

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

用户头像

欢迎关注,一起学习,一起交流,一起进步 2020-06-14 加入

公众号:做梦都在改BUG

评论

发布
暂无评论
网络爬虫开发:JavaScript与Python特性的小差异_Python_我再BUG界嘎嘎乱杀_InfoQ写作社区