网络抓取与网络爬行:了解两者的区别
Anda Miuțescu on Jul 01 2021
什么先出现?网络爬虫还是网络刮刀?
这取决于你如何区分提取和下载。网络搜索并不总是必须使用互联网。从本地系统、数据库或使用数据抓取工具提取信息可称为数据收集。在此期间,网络爬虫的主要指令是将所有访问过的网站复制一份,供搜索引擎日后处理,搜索引擎会将保存的网页编入索引,并快速搜索未编入索引的网页。
本文旨在解释网络搜刮、网络爬虫以及它们之间的区别和共同功能。 此外,我们还提供了关于如何构建自己的网络爬虫的深度指南,请继续阅读!
什么是网络搜索?
Web scraping 也称为数据提取,是从互联网上收集结构化信息的自动化过程。这个总括术语涵盖了大量涉及大数据工作方式的技术和使用案例。
在最基本的层面上,网络搜刮是指从网站上复制数据。然后,用户可以将搜索到的数据导入电子表格、数据库或利用软件进行额外处理。
谁能从网络搜索中获益?任何需要广泛了解某一特定主题的人。如果你曾经涉足过任何类型的研究,你的第一反应很可能是手动复制和粘贴数据到本地数据库。
如今,由于有了自动化工具,开发人员可以轻松使用网络搜索技术。过去需要一个团队花费数周时间才能完成的工作,现在只需几个小时就能完全准确地自主完成。
从手动搜索到自动搜索,可以为个人节省时间。它还为开发人员带来了经济优势。使用网络刮擦工具收集到的数据随后可以导出为 CSV、HTML、JSON 或 XML 格式。
网络搜索是如何工作的?

听起来很简单,对吧?但是,从零开始构建一个可以完成所有这些工作的刮擦器是非常耗时的。更不用说,机器人不一定总能正常工作,你还需要租用代理服务器。不过,如果你还想试试,我们有一些教程可以帮到你。
不过,使用预建工具最诱人的一点是,将其纳入项目非常简单。只需一组证书和对应用程序接口文档的基本理解即可。
此外,预制铲运机还可能附带许多其他好东西:
- 执行 javascript 的无头浏览器
- 验证码解码器
- 跨越数百万 IP 的代理池
- 代理旋转器
- 自定义请求的简单界面
我们的团队通过对行业进行深入研究,并集中精力创建我们所能想到的最有益的解决方案,开发出了 网络刮擦 API,为您节省了大量时间。
什么是网络爬行?
我们都知道并使用 Google、Bing 或其他搜索引擎。使用它们很简单--你向它们询问什么,它们就会在网络的每个角落为你提供答案。但是,归根结底,谷歌是靠其 Googlebot 爬虫的帮助才茁壮成长起来的。
搜索引擎使用网络爬虫根据您输入的关键字扫描互联网网页,并通过索引记住这些网页,以便日后在搜索结果中使用。爬虫还帮助搜索引擎收集网站数据:网址、超链接、元标签和书面内容,以及检查 HTML 文本。
你不必担心机器人会陷入无休止地访问相同网站的怪圈,因为它会记录已经访问过的网站。它们的行为也是由多种标准决定的,例如
- 复诊政策
- 遴选政策
- 重复数据删除政策
- 礼遇政策
网络爬虫面临着一些障碍,其中包括庞大且不断变化的公共互联网和内容选择。每天都有大量信息发布。因此,它们必须不断刷新索引,筛选数以百万计的网页,才能获得准确的结果。尽管如此,它们仍是检查网站内容系统的重要组成部分。
网络抓取是如何工作的?
搜索引擎无法知道有哪些网页。在获取关键字的相关网页之前,机器人必须对其进行抓取和索引。 以下是 7 个综合步骤:

网络抓取与网络爬行
网络搜刮经常与网络爬行混淆。网络搜刮与网络爬虫的不同之处在于,网络搜刮是从其访问的任何页面中提取和复制数据,而网络爬虫则是浏览和读取页面以编制索引。抓取会检查页面和内容,而刮擦则会确保数据到达你的手中。
网络刮擦和网络抓取同时工作的说法是一种误解,我们愿意对此进行调解。网络抓取是一种从网页中提取数据的技术。无论是抓取的网页、特定网站后面的所有网页,还是数字档案中的网页,网络抓取都可以生成一个 URL 列表,供刮除者收集。例如,当一家公司想从一个网站上收集信息时,它就会抓取网页,然后抓取其中有价值的数据。
将网络爬行和网络搜刮结合起来,可以提高自动化程度,减少麻烦。通过抓取,您可以生成一个链接列表,然后将其发送给刮板,这样它就知道要提取什么。这样做的好处是从万维网上的任何地方收集数据,无需任何人力。
使用案例
网络刮擦和网络爬行是一个非常好的组合,可以快速收集和处理人类无法在相同时间内分析的数据。下面举例说明这种组合如何帮助企业:
品牌保护。您可以使用这些工具快速查找对您的品牌有害的在线内容(如专利盗窃、商标侵权或假冒),并将其列出,以便对责任方采取法律行动。
品牌监测。如果使用网络爬虫,品牌监测就简单多了。爬虫可以发现网络环境中对贵公司的提及,并对其进行分类,以便于理解,如新闻报道或社交媒体帖子。添加网络抓取功能,即可完成整个过程并掌握信息。
价格控制。公司利用刮擦提取产品数据,分析这些数据对销售模式的影响,并制定最佳的营销和销售策略。另一方面,爬虫会寻找包含有价值信息的新产品页面。
电子邮件营销。网络抓取能以极快的速度收集网站、论坛和评论区,并提取下一次营销活动所需的所有电子邮件地址。电子邮件抓取甚至可以查看论坛和聊天群组,检查隐藏但可以在标题中找到的电子邮件。
自然语言处理。在这种情况下,机器人用于语言学研究,由机器协助解释人类使用的自然语言。
爬虫和刮擦器用于向这些机器提供大量语言数据,以便它们积累经验。发送给机器的数据越多,机器就能越快达到理想的理解水平。以各类评论为特色的论坛、市场和博客是获取此类信息的最常见网站。
互联网将能够训练它最终拾取和识别俚语,这在当今的营销中至关重要,并力求迎合各种背景。
房地产资产管理:在房地产领域,网络爬虫和刮擦器常被用于分析市场数据和趋势。无论资产类别(写字楼、工业或零售)如何,它们都能提供有关物业或特定建筑群的详细信息,从而帮助租赁企业获得竞争优势。从更广阔的角度来看,机器人所提供的洞察力可以帮助企业更好地进行市场预测和物业管理实践。
潜在客户生成。 如果广告和特价商品不能触及正确的人群,它们就毫无用处。公司使用爬虫和刮擦工具来寻找这些人,无论是在社交媒体上还是在企业注册表上。机器人可以快速找到并收集联系信息,然后发送给销售或营销团队。
如何构建网络爬虫
既然你已经知道了车轮是如何转动的,那么你可能想知道如何真正抓取网站。创建自己的爬虫既省钱又简单。在此基础上,我们为您准备了一份详细的指南,介绍其中的方方面面。
先决条件
- Python3.
- Python IDE。建议/在本指南中,我们将使用Visual Studio Code,但任何其他 IDE 都可以。
- Selenium:用于抓取动态网站的 HTML。
- Beautifulsoup:解析 HTML 文档。
- ChromeDriver:用于配置selenium的网络驱动程序。下载正确的版本并记住存储路径!
设置环境
首先,安装我们需要的库。在你选择的集成开发环境中打开终端,运行以下命令:
> pip install selenium
> pip install beautifulsoup4
现在,让我们将安装的库导入 Python 代码。我们还要定义要抓取的 URL,并为 selenium 添加配置。只需创建一个 crawler.py 文件并添加以下内容:
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from bs4 import BeautifulSoup
CHROMEDRIVER_PATH = "your/path/here/chromedriver_win32/chromedriver"
BASE_URL = "https://ecoroots.us"
SECTION = "/collections/home-kitchen"
FULL_START_URL = BASE_URL + SECTION
options = Options()
options.headless = True
driver = webdriver.Chrome(CHROMEDRIVER_PATH, options=options)
选择一个网站并检查 HTML
我们选择了一个销售零废弃产品的电子商务网站,我们将访问每个产品的页面并提取其 HTML 代码。因此,我们将查找商店网站上的所有内部链接,并递归访问它们。但首先,让我们来看看页面结构,确保不会遇到任何可抓取性问题。右键单击页面上的任意位置,然后单击 "检查元素",就可以了!HTML就是我们的了。
构建爬虫
现在,我们可以开始编写代码了。为了构建我们的爬虫,我们将遵循递归流程,这样就能访问我们遇到的所有链接。但首先,我们要定义入口点:
def crawl(url, filename):
page_body = get_page_source(url, filename)
soup = BeautifulSoup(page_body, 'html.parser')
start_crawling(soup)
crawl(FULL_START_URL, 'ecoroots.txt')
我们实现的抓取函数将通过get_page_source 过程提取 HTML 文档。然后,它将构建 BeautifulSoup 对象,使我们的解析工作更轻松,并调用start_crawling 函数,开始浏览网站。
def get_page_source(url, filename):
driver.get(url)
soup = BeautifulSoup(driver.page_source, 'html.parser')
body = soup.find('body')
file_source = open(filename, mode='w', encoding='utf-8')
file_source.write(str(body))
file_source.close()
return str(body)
As stated earlier, the get_page_source function will use selenium to get the HTML content of the website and will write in a text file in the <body> section, as it’s the one containing all the internal links we are interested in.
unique_links = {}
def start_crawling(soup):
links = soup.find_all(lambda tag: is_internal_link(tag))
for link in links:
link_href = link.get('href')
if not link_href in unique_links.keys() or unique_links[link_href] == 0:
unique_links[link_href] = 0
link_url = BASE_URL + link_href
link_filename = link_href.replace(SECTION + '/products/', '') + '.txt'
crawl(link_url, link_filename)
unique_links[link_href] = 1
这就是爬虫的主要逻辑。一旦接收到 BeautifulSoup 对象,它就会提取所有内部链接。为此,我们使用了一个 lambda 函数,并在 is_internal_link函数中定义了几个条件:
def is_internal_link(tag):
if not tag.name == 'a': return False
if tag.get('href') is None: return False
if not tag.get('href').startswith(SECTION + '/products'): return False
return True
This means that for every HTML element that we encounter, we first verify if it’s a <a> tag, if it has an href attribute, and then if the href attribute’s value has an internal link.
获得链接列表后,我们对每个链接进行迭代,建立完整的 URL 并提取产品名称。有了这些新数据,我们就有了一个新网站,并将其从入口点传递给抓取函数,整个过程重新开始。
但是,如果我们遇到已经访问过的链接怎么办?如何避免无休止的循环?针对这种情况,我们有unique_links 数据结构。对于我们遍历的每个链接,我们都会在开始抓取之前验证它是否被访问过。如果是新链接,那么我们只需在抓取完成后将其标记为已访问过即可。
运行脚本后,爬虫就会开始浏览网站的产品。根据所选网站的大小,这可能需要几分钟时间。最后,您现在应该有一堆文本文件,这些文件将保存爬虫访问的每个页面的 HTML 代码。
最后的想法
网络抓取和网络刮擦密切相关,并通过对最终处理的信息做出贡献而影响彼此的成功。希望这篇文章能帮助您评估这两种机制的使用方法和适用环境。
自动化是数据收集的未来。仅凭这一点,我们就推出了 解决方案,为您省去编写代码的麻烦,让您快速访问网页内容,避免 IP 屏蔽。在安排预算之前,何不先了解一下我们的 免费试用套餐,其中从一开始就包含了住宅和移动代理服务器?继续搜索。
新闻和更新
订阅我们的时事通讯,了解最新的网络搜索指南和新闻。
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.
