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

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

工作原理

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

  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

posted @ 2023-07-21 22:18  博客0214  阅读(101)  评论(0编辑  收藏  举报