python网络爬虫的基本使用

各位帅哥美女点点关注,有关注才有动力啊

网络爬虫

引言

我们平时都说Python爬虫,其实这里可能有个误解,爬虫并不是Python独有的,可以做爬虫的语言有很多例如:PHP、JAVA、C#、C++、Python。

为什么Python的爬虫技术会异军突起呢?

Python火并不是因为爬虫技术,而是AI人工智能、数据分析(GoogleAlphaGo)等等功能;这些Java其实也能做,而选择Python做爬虫是因为Python相对来说比较简单,而且功能比较齐全。

什么是网络爬虫

网络爬虫(英语:web crawler),也叫网络蜘蛛(spider),是一种用来自动浏览万维网的网络机器人。通俗来讲,网络爬虫就是模拟浏览器发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序。

原则上,只要是浏览器(客户端)能做的事情,爬虫都能够做。

为什么要学习网络爬虫

互联网大数据时代,给予我们的是生活的便利以及海量数据爆炸式的出现在网络中。过去,我们通过书籍、报纸、电视、广播或许信息,这些信息数量有限,且是经过一定的筛选,信息相对而言比较有效,但是缺点则是信息面太过于狭窄了。不对称的信息传导,以致于我们视野受限,无法了解到更多的信息和知识。 互联网大数据时代,我们突然间,信息获取自由了,我们得到了海量的信息,但是大多数都是无效的垃圾信息。 例如新浪微博,一天产生数亿条的状态更新,而在百度搜索引擎中,随意搜一条就有成千上百万条信息。 在如此海量的信息碎片中,我们如何获取对自己有用的信息呢? 答案是筛选! 通过某项技术将相关的内容收集起来,在分析删选才能得到我们真正需要的信息。 这个信息收集分析整合的工作,可应用的范畴非常的广泛,无论是生活服务、出行旅行、金融投资、各类制造业的产品市场需求等等……都能够借助这个技术获取更精准有效的信息加以利用。 网络爬虫技术,虽说有个诡异的名字,让能第一反应是那种软软的蠕动的生物,但它却是一个可以在虚拟世界里,无往不前的利器。

浏览网站时所能看见的数据都可以通过爬虫程序保存下来,例如:文字、图片、音频和视频。

应用场景

  • 数据展示:将爬取的数据展示到网页或者APP上,比如:百度新闻、今日头条

  • 数据分析:从数据中寻找一些规律,比如:慢慢买(价格对比)、TIOBE排行等

  • 自动化测试:比如想要测试一个前端页面的兼容性、前端页面UI是否有bug,只需要模拟执行表单提交、键盘输入等页面操作

网络爬虫是否合法

爬虫作为一种计算机技术就决定了它的中立性,因此爬虫本身在法律上并不被禁止,但是利用爬虫技术获取数据这一行为是具有违法甚至是犯罪的风险的。所谓具体问题具体分析,正如水果刀本身在法律上并不被禁止使用,但是用来捅人,就不被法律所容忍了。

爬虫技术与反爬虫技术

爬虫目前能造成的技术上影响在于野蛮爬取,即多线程爬取,从而导致网站瘫痪或不能访问,这也是大多数网络攻击所使用的方法之一。

由于爬虫会批量访问网站,因此许多网站会采取反爬措施。例如:1.IP频率、流量限制;2.请求时间窗口过滤统计;3.识别爬虫等。

但这些手段都无法阻止爬虫开发人员优化代码、使用多IP池等方式规避反爬措施,实现大批量的数据抓取。由于网络爬虫会根据特定的条件访问页面,因而爬虫的使用将占用被访问网站的网络带宽并增加网络服务器的处理开销,甚至无法正常提供服务。

Robots协议

robots(也称为爬虫协议、机器人协议等)称是“网络爬虫排除标准”是网站跟爬虫间的一种协议(国际互联网界通行的道德规范),用简单直接的txt格式文本方式告诉对应的爬虫被允许的权限,也就是说robots.txt是搜索引擎中访问网站的时候要查看的第一个文件。

参考地址:https://www.zhihu.com/robots.txt

  • 以Allow开头的URL地址:允许某爬虫引擎访问

  • 以Disallow开头的URL地址:不允许某爬虫引擎访问

总之,盗亦有道,君子之约。

网络爬虫步骤及相关技术

抓包

  • 浏览器抓包(仅能抓取浏览器的数据包

  • 抓包工具fiddler(基本用于抓取HTTP

cookie与session的区别与连系?

User-Agent: 浏览器信息

HTTP与HTTPS

  • HTTP 与 HTTPS 有哪些区别?

(1)HTTP 是超文本传输协议,信息是明文传输,存在安全风险的问题。HTTPS 则解决 HTTP 不安全的缺陷,在 TCP 和 HTTP 网络层之间加入了 SSL/TLS 安全协议,使得报文能够加密传输。

(2)HTTP 连接建立相对简单, TCP 三次握手之后便可进行 HTTP 的报文传输。而 HTTPS 在 TCP三次握手之后,还需进行 SSL/TLS 的握手过程,才可进入加密报文传输。

(3) HTTP 的端口号是 80,HTTPS 的端口号是 443。

(4)HTTPS 协议需要向 CA(证书权威机构)申请数字证书,来保证服务器的身份是可信的。

  • HTTPS 解决了 HTTP 的哪些问题?

HTTP 由于是明文传输,所以安全上存在以下三个风险:

窃听风险,比如通信链路上可以获取通信内容,用户号容易没。

篡改风险,比如强制植入垃圾广告,视觉污染,用户眼容易瞎。

冒充风险,比如冒充淘宝网站,用户钱容易没。

HTTPS 在 HTTP 与 TCP 层之间加入了 SSL/TLS 协议,可以很好的解决了上述的风险:

信息加密:交互信息无法被窃取,但你的号会因为「自身忘记」账号而没。

校验机制:无法篡改通信内容,篡改了就不能正常显示,但百度「竞价排名」依然可以搜索垃圾

广告。

身份证书:证明淘宝是真的淘宝网,但你的钱还是会因为「剁手」而没。

可见,只要自身不做「恶」,SSL/TLS 协议是能保证通信是安全的。

  • HTTPS 是如何解决上面的三个风险的?

混合加密的方式实现信息的机密性,解决了窃听的风险。

摘要算法的方式来实现完整性,它能够为数据生成独一无二的「指纹」,指纹用于校验数据的完

整性,解决了篡改的风险。

将服务器公钥放入到数字证书中,解决了冒充的风险。

快速入门

安装requests

pip 是 Python 包管理工具,该工具提供了对Python 包的查找、下载、安装和卸载的功能,现在大家用到的所有包不是自带的就是通过pip安装的。Python 2.7.9 + 或 Python 3.4+ 以上版本都自带 pip 工具。

前端:npm install

后端:maven

  • 显示版本和路径

pip --version
  • 安装指定版本的requests

pip install requests         # 最新版本
pip install requests==2.11.0 # 指定版本
pip install requests>=2.11.0 # 最小版本

由于所有请求都需要经过fiddler这个抓包软件进出。所以如果requests与fiddler一起使用,请不要使用requests最新版本,不然直接会卡死,降版本使用即可。

也可以直接通过PyCharm来安装requests模块,点击File -> Settings -> 项目: python10,选择Python解释器,点击 + 号,输入选择requests模块并指定安装版本号(例如:2.11.0),最后点击 安装包(I) 按钮即可。

案例演示

创建纯python项目,新建demo.py并导入requests模块

# 导入模块
import requests
# 通过requests模块模拟发送get请求,并得到响应对象response
resp = requests.get(url)

response响应对象属性介绍:

属性说明
encoding文本编码。例如:resp.encoding="utf-8"
status_code响应状态码。 200 -- 请求成功 4XX -- 客户端错误 5XX -- 服务端响应错误
text响应体。
content字节方式响应体,会自动解码gzip和deflate编码的响应数据
url响应的URL地址。

  • 案例一:快速入门,爬取百度官网并保存到本地

请结合fiddler抓包工具进行以下代码测试。

resp = requests.get("http://www.baidu.com/")

定制请求头headers,请结合知乎网的Robots协议进行设置。伪装User-Agent

resp = requests.get("http://www.zhihu.com/signin?next=%2F",headers={"User-agent": "bingbot"})

定制请求头headers,模拟使用浏览器的User-Agent值。

resp = requests.get("http://www.baidu.com/",headers={"User-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"})

保存文件的方式可使用pathlibopen等两种方式。

  • 案例二:传递URL参数

POST和GET请求方式在传递URL参数时,稍有不同。

GET方式POST方式
params={"key1":"value1","key2":"value2"}data={"key1":"value1","key2":"value2"}
response=requests.get(url,params=params)response=requests.post(url,data=data)

爬取必应搜索“中国”之后的网页,保存为“中国.html”

resp = requests.get("https://cn.bing.com/search",headers={"User-agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36"},params={"q":"中国"})

requests缺点:不能爬取ajax动态加载的数据

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

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

相关文章

网页模板素材网站 web前端网页制作模板

在当今数字化时代,Web 前端网页制作对于企业和个人来说至关重要。无论是企业官网、个人博客还是电商网站,一个美观、功能性强且易于维护的网页设计能够有效提升用户体验和品牌形象。然而,从零开始设计一个网页往往需要耗费大量的时间和精力&a…

ROS系列(一):ROS入门指南 —— 核心解析与版本演进

引言 机器人操作系统(ROS)的诞生,不仅是一场技术革命,更是一张重新定义机器人开发范式的蓝图。从实验室的原型验证到工业场景的规模化落地,从单机智能到群体协作,ROS以开源、模块化和生态驱动的特性&#…

将 Docker 镜像推送到 GitLab Container Registry 的完整步骤

一、前提准备 GitLab 项目: 在 GitLab 上拥有一个项目,例如 your-group/your-project-name。重要: 确保项目路径(尤其是项目名称部分)全部使用小写字母。例如,如果初始是 Your-Project,请在项目设置中将其路径修改为 y…

Java-HashMap基础与扩展学习总结

​面试官​: “HashMap 是 Java 中最常用的数据结构之一,你能说说它的底层实现吗?比如哈希冲突是怎么解决的?” ​你​(结合源码与优化场景): “好的,HashMap 底层是数组链表/红黑…

嵌入式学习之系统编程(五)进程(2)

一、进程的退出 (一)僵尸进程与孤儿进程 (二)相关函数 1、exit函数 2、_exit函数 3、atexit函数 二、进程空间的回收(相关函数) 1、wait函数 2、waitpid函数 3、练习 4、exec族 5、system函数 一…

AI时代新词-Transformer架构:开启AI新时代的关键技术

一、什么是Transformer架构? Transformer架构 是一种基于自注意力机制(Self-Attention Mechanism)的深度学习模型架构,最初由Vaswani等人在2017年的论文《Attention Is All You Need》中提出。它主要用于处理序列数据&#xff08…

基于cornerstone3D的dicom影像浏览器 第二十三章 mpr预设窗值与vr preset

文章目录 前言一、mpr窗口预设窗值二、vr preset三、调用流程 前言 实现mpr窗口预设窗值,vr窗口预设配色 效果如下: 一、mpr窗口预设窗值 可参考 第十五章 预设窗值 逻辑一样的,把windowWidth, windowCenter值转换为voiRange值,…

shell之通配符及正则表达式

通配符与正则表达式 通配符(Globbing) 通配符是由 Shell 处理的特殊字符,用于路径或文件名匹配。当 Shell 在命令参数中遇到通配符时,会将其扩展为匹配的文件路径;若没有匹配项,则作为普通字符传递给命令…

继电保护与安全自动装置:电力系统安全的守护神

电力系统是现代社会赖以生存的基础设施,而继电保护和安全自动装置则是保障电力系统安全稳定运行的守护神。 它们默默无闻地工作着,在电力系统出现异常时,能够迅速准确地切除故障,防止事故扩大,保障电力供应。 那么&…

Flink流处理基础概论

文章目录 引言Flink基本概述传统数据架构的不足Dataflow中的几大基本概念Dataflow流式处理宏观流程数据并行和任务并行的区别Flink中几种数据传播策略Flink中事件的延迟和吞吐事件延迟事件的吞吐如何更好的理解事件的延迟和吞吐flink数据流的几种操作输入输出转换操作滚动聚合窗…

Tomcat 使用与配置全解

一、 Tomcat简介 Tomcat服务器是Apache的一个开源免费的Web容器。它实现了JavaEE平台下部分技术规范,属于轻量级应用服务器。 1. Tomcat版本 Tomcat版本 JDK版本 Servlet版本 JSP版本 10.0.X 8 and later 5.0 3.0 9.0.x 8 and later 4.0 2.3 8.0.x 7…

Unity3D仿星露谷物语开发52之菜单页面

1、目标 创建菜单页面,可通过Esc键开启或关闭。 当把鼠标悬停在上面时它会高亮,然后当点击按钮时标签页会被选择。 2、 创建PauseMenuCanvas (1)创建Canvas 在Hierarchy -> PersistentScene -> UI下创建新的Cavans命名为…

Spring Boot 调优的 12 个关键节点

数据库连接池调优:精准匹配系统资源 症状: 默认配置下,连接池资源使用不当,高并发时连接耗尽或排队。 常见误区: spring:datasource:hikari:maximum-pool-size: 1000 # 设置过大connection-timeout: 30000 # 设置…

前端流行框架Vue3教程:28. Vue应用

28. Vue应用 应用实例 每个 Vue 应用都是通过 createApp函数创建一个新的 应用实例 main.js import {createApp} from vue import App from ./App.vue// app:Vue的实例对象 // 在一个Vue项目中,有且只有一个Vue的实例对象 const app createApp(App)/* 根组件选项…

MongoDB 数据库迁移:完整指南与最佳实践

在现代数据驱动的应用中,数据库迁移是一项常见的任务,无论是升级 MongoDB 版本、更换服务器硬件,还是迁移到云环境(如 MongoDB Atlas),都需要一个可靠的迁移策略。错误的迁移方式可能导致数据丢失、应用停机…

MQTT-Vue整合

Vue整合 依赖环境 nodejs 版本 > 18安装 element plus npm install element-plus安装 mqtt npm install mqtt初始化Vue项目 使用 vite 创建项目 执行命令 npm create vitelatest输入项目名称 vue-mqtt-demo MQTT连接 连接组件代码 components/MqttDemo.vue <script…

IP 地址反向解析(IP反查域名)原理与应用

一、IP 地址反向解析的原理与技术细节 IP 地址反向解析&#xff08;Reverse IP Lookup&#xff09;是一种将 IP 地址映射回其关联域名或主机名的网络技术&#xff0c;与常见的正向 DNS 解析&#xff08;将域名解析为 IP 地址&#xff09;形成互补。这一过程在网络安全研究、漏…

Mermaid 文件支持的图表

Mermaid 文件后缀支持多种类型的图表&#xff0c;包括但不限于&#xff1a; 流程图&#xff1a;用于描述流程和决策的图表&#xff0c;常用于业务流程的表示和分析。 时序图&#xff1a;用于描述事件发生的顺序和时序关系的图表&#xff0c;常用于系统交互和消息传递的分析。 …

用 Python 构建自动驾驶的实时通信系统:让车辆“交流”起来!

用 Python 构建自动驾驶的实时通信系统:让车辆“交流”起来! 自动驾驶技术正加速变革全球交通体系,它不仅是机器学习与计算机视觉的胜利,更是一场 高效通信架构的革命。自动驾驶汽车需要实时交换信息,比如: 传感器数据(雷达、激光雷达、摄像头)V2V(车与车通信)V2X(…

PDF处理控件Aspose.PDF教程:以编程方式合并PDF文档

合并 PDF 文档是常见的需求——无论您是整理报告、合并发票还是整合扫描页面。单一、统一的文件更易于在个人、学术或专业用途中共享、存储和管理。 本文将向您展示如何使用 Aspose.PDF在C#、Java 和 Python中以编程方式合并 PDf 文件。 Aspose.PDF最新版下载 为什么使用 As…