爬虫01-爬虫原理以及爬虫前期准备工作

文章目录

  • 1 爬虫基本原理
    • 什么是爬虫
    • 爬虫功能详解
    • 爬虫基本流程
    • 两个概念:request和response
  • 2 一些问题
    • 爬虫能抓取什么样的数据?
    • 抓取的数据怎么提取部分内容?数据解析方式。
    • 为什么我爬虫抓取的数据和浏览器看到的不一样
    • 怎样解决JavaScript渲染的问题?
    • 怎样保存数据

1 爬虫基本原理

什么是爬虫

爬虫,又名网络爬虫。顾名思义,就是在网络中爬行的一只蜘蛛。
互联网可以看作是一张巨大的网,爬虫就在这个网上爬来爬去,如果在爬行的过程中遇到了一些网站资源,就会把它抓取下来。
如何抓取、抓取什么内容就由你来决定!

爬虫功能详解

简单来说,爬虫就是:请求网站并提取数据的自动化程序。
关键字说明:
请求:平时我们打开浏览器输入网址按下回车可以看到一些页面,这个过程 其实就是通过浏览器去请求目标服务器,目标服务器同意请求之后返回给我们一个网页。那么爬虫就是写一段代码模拟浏览器的这个过程,去获取网页资源。
提取:一般请求获取到的网页资源是一串HTML代码,其中就包含一些标签以及我们需要的文字等资源。接下来就需要把这些信息提取出来。
自动化:一个爬虫代码一般会爬取一个对应的目标信息,我们程序写好并运行代码之后就会自动的去完成爬取的过程,并且把资源爬取到本地。

爬虫基本流程

在这里插入图片描述
爬虫的基本流程基本就这几步:
1 发起请求
2 获取响应内容
3 解析内容
4 保存数据
中间可能会经过一些其他复杂的步骤,但基本步骤就这几步。

两个概念:request和response

request(请求):Request 是爬虫发送给服务器的信息,它包含了要获取特定资源的详细信息。当我们使用爬虫发送一个请求时,我们可以指定请求的类型(GET、POST等)、目标URL、请求头(Headers)、请求体(Body)等信息。请求的目的是向服务器请求特定的数据或资源。
在这里插入图片描述
response(响应):Response 是服务器对 Request 的回应,它包含了服务器返回的数据和相关的元信息。当服务器接收到一个请求后,它会根据请求的内容进行处理,并返回相应的数据。响应通常包括状态码(例如200表示成功,404表示未找到等)、响应头(Headers)、响应体(Body)等信息。
在这里插入图片描述

在这里插入图片描述

2 一些问题

爬虫能抓取什么样的数据?

  • 网页文本:如HTML文档、Json格式文本等。
  • 图片:获取到的是二进制文件,保存为图片格式。
  • 视频:同为二进制文件,保存为视频格式即可。
  • 其他:只要是网页上能看得到的东西全都可以爬取下来。

抓取的数据怎么提取部分内容?数据解析方式。

请求服务器之后大部分情况下得到的是HTML代码,所以需要对数据进行解析,获取我们需要的部分。以下是解析数据的方法,选择适合当前情况的方式。

  • 直接处理:适用于网页比较简单的情况,直接获取数据,并用strip简单处理一下头尾就可以了。
  • json解析:适用于用Ajax加载的网页,通常返回的格式就是json
  • 正则表达式:非常常用的方法,它是规则字符串,来把HTML代码中的相应的内容提取出来
  • BeautifulSoup:解析库,相对于正则表达式更好用,更加容易
  • PyQuery:使用PyQuery可以轻松地从网页或字符串中提取数据,并对文档进行修改和操作。
  • XPath:“网页树”,XPath使用路径表达式来描述和定位文档中的节点,通过这些表达式可以实现非常精确的节点选择。

为什么我爬虫抓取的数据和浏览器看到的不一样

当我们使用爬虫抓取网页时,通常只能获取到页面的原始HTML代码,而无法获取到经过JavaScript渲染后生成的动态内容或者其他的一些内容:例如css、图片或者视频等。如果网站使用了JavaScript来加载或修改页面的部分内容,那么你通过爬虫获取到的数据可能与浏览器中看到的不一致。

在这种情况下,可以考虑使用一些支持JavaScript渲染的工具或库,例如Selenium或Puppeteer。这些工具可以模拟浏览器行为,执行JavaScript代码,并获取到完整的页面内容。这样可以更接近浏览器中所看到的内容。

怎样解决JavaScript渲染的问题?

  • 分析Ajax请求
    Ajax(Asynchronous JavaScript and XML)是一种使用JavaScript实现异步通信的技术。在传统的Web页面中,用户交互通常需要刷新整个页面才能显示新的内容。而使用Ajax,可以通过后台异步请求数据,然后更新页面的局部内容,而不需要刷新整个页面。
    现在网页的大部分关键数据都是通过Ajax请求得到的,并通过后期的js渲染显示到页面上。
  • Selenium/WebDriver
    驱动一个浏览器模拟加载一个网页,这个是用来做自动化测试的一个工具。
    通过这个工具去加载一个网页,然后用page_source直接获取网页源代码,可以减少js渲染的问题。
#说明:下面代码就是使用selenium去打开谷歌浏览器,并输入百度网址,然后定位到url输入关键词的部分去输入hello world,并搜索,然后关闭。
from selenium import webdriver
from selenium.webdriver.common.keys import Keys# 创建WebDriver对象
driver = webdriver.Chrome()# 打开百度网站
driver.get("http://www.baidu.com")# 定位搜索框元素,并输入关键字,然后输出网页源代码
search_box = driver.find_element_by_name("wd")
search_box.send_keys("Hello World")
search_box.send_keys(Keys.RETURN)
print(driver.page_source)
# 关闭WebDriver对象和浏览器窗口
driver.quit()
  • Splash
    跟上一个方法差不多,也是模拟js渲染的
  • PyV8、 Ghost.py

怎样保存数据

保存数据可以有多个方式。
在这里插入图片描述

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

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

相关文章

阿里云弹性计算技术公开课-ECS 安全季 全新上线!

云布道师 如何保障云上业务的应用安全和数据安全,是每一个上云的企业和用户关注的重点。云上安全建设是一个体系化工程,需要用户主动进行多方面的考虑和实施,包括制定完善的安全策略和规范,如身份认证、访问控制、漏洞管理、安全…

超实用的公众号内容制作流程,小白也能轻松学会

公众号是以内容为王的平台,保持优质原创内容发布可以给公众号带来源源不断的流量,稳定输出内容,会获得平台的流量扶持。 很多小伙伴运营公众号都没有什么阅读量,一方面是公众号内容同质化越来越严重,另外一方面是公众…

编程笔记 html5cssjs 030 HTML音频

编程笔记 html5&css&js 030 HTML音频 一、<audio>元素二、属性三、事件三、使用 CSS 设置样式练习小结 有时候网页上也需要嵌入音频。比如播放歌曲或老师讲课的音频等。 一、<audio>元素 <audio> HTML 元素用于在文档中嵌入音频内容。<audio>…

寒假刷题第四天

PTA甲级 1017 Queueing at Bank 可以使用小顶堆模拟窗口的情况&#xff0c;一定是最小的时间的窗口先空出来 #include<iostream> #include<algorithm> #include<queue> #include<vector>using namespace std;struct people {int time;int process; …

完全卸载grafana

查看要卸载的包的名字 yum list installed yum remove grafana-enterprise.x86_64 成功

【tensorflowflutterweb】机器学习模型怎样用到前端上(未写完)

书接上回 在上一章 我们谈了怎么根据项目需求构建一个简单的机器学习模型。 ​​​​​​ ​​​​​​【tensorflow&flutter】自己写个机器学习模型用在项目上&#xff1f;-CSDN博客文章浏览阅读852次&#xff0c;点赞22次&#xff0c;收藏15次。【tensorflow&flutter…

【2023 - 探索】博0到博1,游戏新地图的探索日志

【2023 - 探索】博0到博1&#xff0c;游戏新地图的探索日志 写在最前面CSDN探索日志2023的探险 探索日志年终回顾探索 冒险回顾实习6月开始跟着老师做科研年中的一些其他事情9月开始上课开学后11月&#xff0c;读者互动 新年展望新年祝福 写在最前面 2023&#xff0c;我解锁了新…

C语言——结构体类型(二)【结构体内存对齐,结构体数组】

&#x1f4dd;前言&#xff1a; 上一讲结构体类型&#xff08;一&#xff09;中&#xff0c;我们讲述了有关结构体定义&#xff0c;创建&#xff0c;初始化和引用的内容&#xff0c;这一讲&#xff0c;我们进一步学习结构体的相关知识&#xff1a; 1&#xff0c;结构体内存对齐…

腾讯云2024年优惠券领取入口汇总

腾讯云是国内知名的云计算服务提供商&#xff0c;提供了包括云服务器、云数据库、云存储、人工智能等全方位的云服务。为了吸引更多的用户&#xff0c;腾讯云经常会推出各种优惠券&#xff0c;让用户在购买云服务时能够享受到更多的优惠&#xff0c;下面给大家整理汇总最新腾讯…

独享静态代理IP在海外市场调研中的独特优势

独享静态代理IP在海外市场调研中扮演着至关重要的角色&#xff0c;提供了一系列无可比拟的优势。独享静态代理IP的稳定性和可靠性对于长期的市场调研至关重要&#xff0c;它保证了连接的持续性和数据的准确性。通过这些方面的综合优势&#xff0c;独享静态代理IP成为海外市场调…

【华为OD机试真题2023CD卷 JAVAJS】矩阵匹配

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 矩阵匹配 知识点二分查找DFS搜索 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 从一个N*M(N<=M)的矩阵中选出N个数,任意两个数字不能在同一行或同一列,求选出来的N个数中第K大的数字的最小值是多少。…

每日一看大模型新闻(2023.11.20)

1.产品发布 1.1长虹&#xff1a;首个基于大模型的智慧家电AI平台 发布日期&#xff1a;2023.11.20 全球首个基于大模型智慧家电AI平台长虹云帆震撼发布&#xff01; 主要内容&#xff1a;长虹智慧AI平台发布会上&#xff0c;发布了全球首个基于大模型的智慧家电AI平台——长…

靜態住宅IP代理詳解(ISP代理)

IP地址如同我們的網路身份證&#xff0c;是我們在互聯網世界中的標識。而在這個廣闊的網路世界中&#xff0c;有一種特殊的IP地址——靜態住宅IP&#xff0c;它就像我們的網路“定居地”。 靜態住宅IP是什麼&#xff1f; 靜態住宅IP&#xff0c;顧名思義&#xff0c;是一種固定…

使用Rider C# Dll工程和Unity工程互相调用、断点方法

总体流程 创建C# Dll工程&#xff0c;生成C#工程Dll 创建Unity工程 Unity调用C#工程的代码 C#工程调用Unity工程的代码 断点方法 创建C# Dll工程&#xff0c;生成C#工程Dll 创建工程 选这个&#xff0c;注意UnityEngineDll这个选项&#xff0c;要选你目标unity版本的Dll…

R语言生物群落(生态)数据统计分析与绘图教程

详情点击链接&#xff1a;R语言生物群落&#xff08;生态&#xff09;数据统计分析与绘图教程 前沿 R 语言作的开源、自由、免费等特点使其广泛应用于生物群落数据统计分析。生物群落数据多样而复杂&#xff0c;涉及众多统计分析方法。 一&#xff1a;R和Rstudio及入门和作…

【数据结构】7大排序最详细

0.前言 接下来进入排序&#xff0c;我们知道在c语言阶段可能就学习过了像冒泡排序&#xff0c;选择排序这种比较简单的排序&#xff0c;那么接下来我们就会学习到更加高级的排序算法。但高级代表着难度的提升&#xff0c;但不用担心&#xff0c;博主会细细来谈&#xff0c;慢慢…

202312 青少年软件编程(C/C++)等级考试试卷(四级)电子学会真题

2023年12月 青少年软件编程&#xff08;C/C&#xff09;等级考试试卷&#xff08;四级&#xff09;电子学会真题 1.移动路线 题目描述 桌子上有一个m行n列的方格矩阵&#xff0c;将每个方格用坐标表示&#xff0c;行坐标从下到上依次递增&#xff0c;列坐标从左至右依次递增…

为什么要做FP独立站?FP独立站有哪些优势?

近年来&#xff0c;跨境电商的商家们面临越来越大的平台政策压力&#xff0c;商家们纷纷把眼光聚焦到独立站上&#xff0c;眼下独立站已经成为出海卖家的标配。 特别是想做FP商品的卖家&#xff0c;相对于亚马逊平台&#xff0c;独立站才是你们的最终出路... 那么&#xff0c;问…

go-zero 如何在任意地方获取yaml中的值

1、config配置文件中新增全局变量 package configimport "github.com/zeromicro/go-zero/rest"type Config struct {rest.RestConfDB struct {DataSource string}Redis struct {Addr stringPassWord stringUserName string}Auth struct {AccessSecret stringAcc…

ROS2学习笔记一:安装及测试

目录 前言 1 ROS2安装与卸载 1.1 安装虚拟机 1.2 ROS2 humble安装 2 ROS2测试 2.1 topic测试 2.2 小海龟测试 2.3 RQT可视化 2.4 占用空间 前言 ROS2的前身是ROS&#xff0c;ROS即机器人操作系统&#xff08;Robot Operating System&#xff09;,ROS为了“提高机器人…