首页 > 其他分享 >[爬虫]1.1.1网络爬虫的概念

[爬虫]1.1.1网络爬虫的概念

时间:2023-07-21 22:22:12浏览次数:53  
标签:网页 1.1 URL 网络 BeautifulSoup 爬虫 链接

网络爬虫,也称为网页爬虫或者网页蜘蛛,是一种用来自动浏览互联网的网络机器人。它们会按照特定的规则,从网页上获取信息,然后将这些信息保存下来。网络爬虫的名字来源于它们的工作方式,它们就像是在网络上爬行的蜘蛛,通过链接从一个网页爬到另一个网页。

工作原理

网络爬虫的基本工作原理是按照一定的规则,自动地抓取网络信息。大体上,它的工作过程可以分为以下几步:

  1. 初始URL: 爬虫开始工作时,我们需要给它一些初始的URL。这些URL就像是爬虫的"种子",提供了爬虫的起点。

  2. 发送请求和获取响应: 爬虫会向这些URL发送请求,然后得到网页的响应。这个过程就像是你在浏览器中输入一个网址,然后浏览器显示出网页的过程。

  3. 解析网页: 爬虫会解析得到的网页内容,从中提取出我们需要的信息,比如新闻的标题和内容、商品的价格和图片等。

  4. 提取链接: 在解析网页的过程中,爬虫还会提取出网页中的链接,然后将这些链接添加到待爬取的URL队列中。

  5. 循环爬取: 爬虫会重复上述过程,不断地从URL队列中取出URL,发送请求,获取响应,解析网页,提取信息和链接,直到URL队列为空,或者达到了我们设置的爬取深度。

这就是网络爬虫的基本工作原理。它们就像是在网络上爬行的蜘蛛,通过链接从一个网页爬到另一个网页。

网络爬虫的分类

按照工作方式,网络爬虫可以分为两类:一类是通用网络爬虫,一类是聚焦爬虫。

  1. 通用网络爬虫: 通用网络爬虫主要是搜索引擎使用的爬虫,比如Google的Googlebot,它们的目标是尽可能地爬取整个网络。

  2. 聚焦爬虫: 聚焦爬虫则是针对特定的任务或者网站进行爬取,比如我们自己编写的爬虫,通常就是聚焦爬虫。

网络爬虫的应用

网络爬虫有很多应用,比如搜索引擎的网页索引,新闻的自动聚合,商品价格的监控等。在数据科学和机器学习领域,网络爬虫也经常被用来收集训练数据。

网络爬虫的例子

这是一个简单的Python网络爬虫的例子,它使用requests库发送请求,使用BeautifulSoup库解析HTML,从Python官方网站上爬取所有PEP的标题。

import requests
from bs4 import BeautifulSoup

url = "https://www.python.org/dev/peps/"

response = requests.get(url)

soup = BeautifulSoup(response.text, 'html.parser')

pep_list = soup.find('table', {"class": "list-table"}).findAll('tr')

for pep in pep_list[1:]:
    number = pep.find('td', {"class": "pep-number"}).text
    title = pep.find('td', {"class": "pep-title"}).text
    print(f'{number}: {title}')

请求和响应

在网络爬虫的工作过程中,发送请求和获取响应是非常重要的一步。简单来说,请求就是爬虫向服务器发送一个消息,告诉服务器它想要获取什么信息,响应则是服务器返回的消息,包含了爬虫请求的信息。

HTTP协议是互联网上应用最广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。一个HTTP请求包含三个部分:请求行、请求头部和请求数据。同样,HTTP响应也包含三个部分:状态行、消息报头和响应正文。

在Python中,我们常用的发送HTTP请求的库有requests和urllib,其中requests更为简单易用。

这是一个使用requests发送GET请求的例子:

import requests

response = requests.get('https://www.python.org')

print(response.status_code)  # 打印状态码
print(response.text)  # 打印响应内容

网页解析

解析网页是网络爬虫的另一个重要步骤。网页大部分是用HTML语言编写的,HTML是一种标记语言,它的内容由一系列的标签组成。我们可以通过解析HTML,提取出我们需要的信息。

Python中常用的HTML解析库有BeautifulSoup和pyquery等,其中BeautifulSoup更为常用。

这是一个使用BeautifulSoup解析HTML的例子:

from bs4 import BeautifulSoup

html = """
<html>
    <head>
        <title>Test Page</title>
    </head>
    <body>
        <h1>Welcome to the Test Page</h1>
        <p>This is a <a href="https://www.example.com">link</a>.</p>
    </body>
</html>
"""

soup = BeautifulSoup(html, 'html.parser')

title = soup.find('title').text
h1 = soup.find('h1').text
link = soup.find('a')['href']

print(f'Title: {title}')
print(f'H1: {h1}')
print(f'Link: {link}')

链接提取

链接提取是网络爬虫的一项基本技能。通过提取网页中的链接,网络爬虫可以从一个页面跳转到另一个页面,就像蜘蛛通过丝线在网上移动一样。

在HTML中,链接通常由<a>标签表示,链接的URL通常写在href属性中。我们可以用BeautifulSoup提取出所有的<a>标签,然后读取它们的href属性,就可以得到所有的链接。

这是一个提取链接的例子:

from bs4 import BeautifulSoup

html = """
<html>
    <body>
        <a href="https://www.example.com">Link 1</a>
        <a href="https://www.example2.com">Link 2</a>
        <a href="https://www.example3.com">Link 3</a>
    </body>
</html>
"""

soup = BeautifulSoup(html, 'html.parser')

links = soup.findAll('a')

for link in links:
    print(link['href'])

这就是网络爬虫的基本概念,它们# 网络爬虫的概念

网络爬虫,也称为网页爬虫或者网页蜘蛛,是一种用来自动浏览互联网的网络机器人。它们会按照特定的规则,从网页上获取信息,然后将这些信息保存下来。网络爬虫的名字来源于它们的工作方式,它们就像是在网络上爬行的蜘蛛,通过链接从一个网页爬到另一个网页。
推荐阅读:

https://mp.weixin.qq.com/s/dV2JzXfgjDdCmWRmE0glDA

https://mp.weixin.qq.com/s/an83QZOWXHqll3SGPYTL5g

file

标签:网页,1.1,URL,网络,BeautifulSoup,爬虫,链接
From: https://www.cnblogs.com/yaoqian/p/17572506.html

相关文章

  • 实现PS端YOLO网络参数导入函数
    实现PS端YOLO网络参数导入函数目的:从SD卡读取Python生成的YOLO网络的所有参数的bin文件,并存储到DDR3内存中,为YOLO网络的推理和计算功能做准备在main.c文件中调用load_param函数,一次性导入所有层的参数前提:已经在Vivado和Vitis中创建了工程,并导出了硬件平台已经在Pyth......
  • 深度学习(九)——神经网络:最大池化的作用
    一、torch.nn中Poollayers的介绍官网链接:https://pytorch.org/docs/stable/nn.html#pooling-layers1.nn.MaxPool2d介绍nn.MaxPool2d是在进行图像处理时,Poollayers最常用的函数官方文档:MaxPool2d—PyTorch2.0documentation(1)torch.nn.MaxPool2d类classtorch.nn.......
  • 云原生第八周--k8s网络组件
    一网络通信1二层通信基于目标mac地址通信不可跨局域网通信通常通过交换机实现报文转发2三层网络通信-VlanVLAN(VirtualLocalAreaNetwork)即虚拟局域网,是将一个物理(交换机)的网络在逻辑上划分成多个广播域的通信技术,VLAN内的主机间可以直接通信,而VLAN网络外的主机需要......
  • 网络性能测试工具iperf3
    1.创建两个容器#创建第一个容器dockerrun-d--namecontainer1ubuntu:latestsleepinfinity#创建第二个容器dockerrun-d--namecontainer2ubuntu:latestsleepinfinity2.查找第一个容器的ip地址dockerinspectcontainer13.进入第一个容器,并安装iperf3。......
  • k8s 学习笔记之集群网络插件安装
    我们在安装完集群后,通过kubectlgetnodes命令获取节点,可以看到所有节点都处于NotReady的状态,这是没有安装网络插件导致的。安装网络插件kubernetes支持多种网络插件,比如flannel、calico、canal等等,任选一种使用即可,本次选择flannel下面操作只需在master节点执行即可,插件......
  • 电力、通信、计算和网络技术国际学术会议(PCCNT2023)
    ★重要信息大会地点:中国-湖北-武汉大会时间:2023年9月24-25日截稿日期:2023年8 月30日接受/拒稿通知:投稿后1-2周收录检索:EI在线投稿期待在中国武汉见到你!★主讲嘉宾01.UdayaK.Madawala,奥克兰大学奥克兰大学电气与计算机工程系教授,专注于与V2X应用的双向无线电动汽车......
  • 【第2周】卷积神经网络
    一、代码练习importtorchimporttorch.nnasnnimporttorch.nn.functionalasFimporttorch.optimasoptimfromtorchvisionimportdatasets,transformsimportmatplotlib.pyplotaspltimportnumpy#一个函数,用来计算模型中有多少参数defget_n_params(model):......
  • 探索Reactor网络模型在当今应用领域的革新
    本文分享自华为云社区《驾驭网络技术的未来:探索Reactor网络模型在当今应用领域的革新》,作者:LionLong。本文介绍了Linux网络设计中的Reactor网络模型及其在实际应用中的重要性。Reactor模型是一种经典的事件驱动设计模式,广泛应用于构建高性能、可扩展的网络服务器。我们将探讨R......
  • Untiy 网络编程-深入了解TCP
    1.从TCP到物理层应用层:应用层是给应用程序提供功能的。在发送{hello}的例子里面,计算机会把hello转化为二进制然后发送到传输层。传输层:在收到二进制数据后,传输层协议会对它进行一系列的加工,并提供数据流传送、可靠性校验,流量控制。又由于网络层的IP包......
  • 计算机网络基础
    1.同网段主机之间通信(1)主机首先根据IP号和子网掩码来计算网络号,查看是否处于同一网段(2)根据ARP协议(2-1)首先,在本机的ARP缓存表中查看目的IP地址的MAC地址(2-2)如果查询到对应条目,则直接封装数据包进行转发(2-3)如果不存在对应条目,则在使用ARP协议进行广播查询(2-3-1)主机封装广播数......