网络爬虫开发: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将异步代码块变为同步代码。


相关文章
|
16天前
|
数据采集 存储 JSON
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第27天】本文介绍了Python网络爬虫Scrapy框架的实战应用与技巧。首先讲解了如何创建Scrapy项目、定义爬虫、处理JSON响应、设置User-Agent和代理,以及存储爬取的数据。通过具体示例,帮助读者掌握Scrapy的核心功能和使用方法,提升数据采集效率。
60 6
|
1月前
|
数据采集 存储 JavaScript
构建你的第一个Python网络爬虫
【9月更文挑战第34天】在数字信息泛滥的时代,快速有效地获取和处理数据成为一项重要技能。本文将引导读者通过Python编写一个简易的网络爬虫,实现自动化地从网页上抓取数据。我们将一步步走过代码的编写过程,并探讨如何避免常见陷阱。无论你是编程新手还是想扩展你的技术工具箱,这篇文章都将为你提供有价值的指导。
75 18
|
10天前
|
数据采集 存储 JSON
Python爬虫开发中的分析与方案制定
Python爬虫开发中的分析与方案制定
|
14天前
|
数据采集 Web App开发 JavaScript
爬虫策略规避:Python爬虫的浏览器自动化
爬虫策略规避:Python爬虫的浏览器自动化
|
14天前
|
数据采集 存储 XML
Python实现网络爬虫自动化:从基础到实践
本文将介绍如何使用Python编写网络爬虫,从最基础的请求与解析,到自动化爬取并处理复杂数据。我们将通过实例展示如何抓取网页内容、解析数据、处理图片文件等常用爬虫任务。
|
17天前
|
数据采集 前端开发 中间件
Python网络爬虫:Scrapy框架的实战应用与技巧分享
【10月更文挑战第26天】Python是一种强大的编程语言,在数据抓取和网络爬虫领域应用广泛。Scrapy作为高效灵活的爬虫框架,为开发者提供了强大的工具集。本文通过实战案例,详细解析Scrapy框架的应用与技巧,并附上示例代码。文章介绍了Scrapy的基本概念、创建项目、编写简单爬虫、高级特性和技巧等内容。
39 4
|
18天前
|
数据采集 存储 机器学习/深度学习
构建高效的Python网络爬虫
【10月更文挑战第25天】本文将引导你通过Python编程语言实现一个高效网络爬虫。我们将从基础的爬虫概念出发,逐步讲解如何利用Python强大的库和框架来爬取、解析网页数据,以及存储和管理这些数据。文章旨在为初学者提供一个清晰的爬虫开发路径,同时为有经验的开发者提供一些高级技巧。
13 1
|
1月前
|
存储 安全 网络安全
云端盾牌:云计算时代的网络安全守护在数字化浪潮中,云计算以其高效、灵活的特性成为企业转型的加速器。然而,伴随其迅猛发展,网络安全问题亦如影随形,成为悬在每个组织头顶的达摩克利斯之剑。本文旨在探讨云计算服务中的网络安全挑战,分析信息安全的重要性,并提出相应对策,以期为企业构建一道坚实的云端防护网。
在当今这个数据驱动的时代,云计算已成为推动创新与效率的关键力量。它允许用户随时随地访问强大的计算资源,降低了企业的运营成本,加速了产品上市时间。但随之而来的网络威胁也日益猖獗,尤其是对于依赖云服务的企业而言,数据泄露、身份盗用等安全事件频发,不仅造成经济损失,更严重损害品牌信誉。本文深入剖析云计算环境中的安全风险,强调建立健全的信息安全管理机制的重要性,并分享一系列有效策略,旨在帮助企业和个人用户在享受云服务带来的便利的同时,也能构筑起强有力的网络防线。
|
1月前
|
数据采集 JavaScript 前端开发
JavaScript逆向爬虫——使用Python模拟执行JavaScript
JavaScript逆向爬虫——使用Python模拟执行JavaScript
|
29天前
|
数据采集 存储 JavaScript
Dynamic Website 爬虫:应对动态内容与 JavaScript 渲染挑战
本文深入探讨了如何设计针对动态网站的爬虫,以采集 WIPO Brand Database 中的专利和技术信息。文章详细介绍了动态网站的挑战,包括 JavaScript 渲染、反爬虫机制和异步加载,并提出了解决方案,如使用 Selenium 模拟浏览器、代理 IP 技术和 API 抓取。最后,通过具体代码示例展示了如何实现这些技术手段。