让我们找到最好的独享代理IP服务器
代理销售商的私人、ISP、移动代理 - 永远不会被阻止

使用 Python 和 Scraper 工具进行网络抓取的新手指南

概述网络搜索所需的资源、使用 Python 和软件进行搜索时可能需要的资源以及不需要的资源。

网络搜刮是任何人从特定网站获取大量数据的最佳捷径。术语 "网络搜索 "包括使用'...爬虫,"它可以从一个网页导航到另一个网页,甚至在一个网页中导航到另一个子网页;'蜘蛛在网站所有者认为法律允许的范围内提取数据",以及 "在网站所有者认为法律允许的范围内提取数据"。刮板这可能指的是让机器为你收集和存储数据的整个功能。

我们所说的数据并不是一两个 html 文件:刮擦器可以在短时间内提取数百万个数据点。更妙的是,它们可以根据指令专门提取所需的数据类型。

在许多情况下,如此庞大的数据集就是这样建立起来的:人类收集数据的速度和效率远不及机器。这就是本质,也就是人们所说的网络刮擦数据。


但首先要知道,任何一台个人电脑的数据搜刮能力都是有限的。在工业级别上进行数据搜刮所需的计算能力需要服务器和数据中心。这也是为什么下面列出的许多服务都有定价选项。对于那些没有定价选项的服务,障碍来自于机器人协议、

因此,在开始刮削之前,请首先认真对待 "网络刮削协议"!

网络抓取协议

无论您使用何种工具进行网络搜刮,网站都会制定一些习惯性协议。不遵守这些协议可能会产生一些不同的负面结果。

如果网站规模较小,大量刮擦可能会对其服务器造成影响,从而被视为服务器攻击,这可能会产生法律后果。中型或大型网站不太容易受到这种影响,但也会有其他后果。

应用程序接口

如果网站有 API,则鼓励使用 API。但刮擦更多地是从网页中提取原始数据,因此使用 API 在技术上是用一种完全不同的方法收集数据。

在任何情况下,你都会受到以下方面的限制:可以刮取的内容、刮取的频率以及刮取内容的大小。当你了解了数据搜刮后,你可能会熟悉工人或蜘蛛(稍后定义)这些术语。这些都需要遵循这些准则,但在哪里可以找到这些准则呢?

/robots.txt。

只要单一域名下的网页网络中存在信息,较大的网站通常会有一个登陆页面,说明网络刮擦器能在其网站上做什么和不能做什么。这些信息通常可以在主页的 URL 下找到,后面跟一个"/robots.txt"。

例如,以限制比同行多而著称的社交媒体网络 Facebook,在其网站上标记了所有被禁止的行为。 facebook.com/robots.txt.下面是直接从他们自己的 "robots.txt "子页面上截取的一些他们不允许您搜刮的内容。这里也是检查网站是否包含网站地图的好地方。有的网站有,有的网站没有,但如果有,搜刮者的工作就容易多了。

facebook 机器人

请注意,这并不意味着从这个特定网站(或从任何网站)获取此类数据是不可能的。这只是意味着管理员在以下几个方面大大增加了难度:更容易 被封IP除其他障碍外,使用简单、流行的网络搜刮工具也比较困难。当然,只要有一定的编程能力,这些问题总能在一定程度上得到解决。

IP 旋转

如果不遵守网站规定的规则,你的 IP 地址很快就会被禁止。为了避免这种情况,我建议你使用旋转代理进行网络搜索。 住宅代理服务 提供 IP 轮换,以便进行刮擦和网络抓取您可以通过旋转代理提供商轻松设置 IP 旋转,让我使用 Smartproxy 下面以 python 为例,为初学者提供一个简单的 IP 旋转代码、

# 在此示例中,从一个随机 IP 对 `example.com` 进行了查询。
导入 urllib.request
导入随机
username = 'USERNAME' 用户名
密码 = 'PASSWORD'
entry = ('http://customer-%s:%[email protected]:7000' %
(用户名,密码))
query = urllib.request.ProxyHandler({
http': entry、
https': entry、
})
execute = urllib.request.build_opener(query)
print(execute.open('https://ipinfo.io').read())


还有 高级代理提供商,如 Luminati.io我们不仅提供易于使用的 API,还提供先进的 Luminati Proxy Manager (LPM),用于处理网络爬虫和数据提取的 IP 轮换。

用于网络抓取的 Luminati

这是毫无疑问的、 Luminati 为网络搜索提供最佳住宅 IP 旋转解决方案 如果有足够的预算!

夜光 Pythno API

#!/usr/bin/env python
print('If you get error "ImportError:No module named \'six\'" install six:\n'+\
'$ sudo pip install six');
print('To enable your free eval account and get CUSTOMER, YOURZONE and ' +\ 'YOURPASS, please contact me.
'YOURPASS,请联系 [email protected]')
导入 sys
if sys.version_info[0]==2:
导入 six
from six.moves.urllib import request
opener = request.build_opener(
request.ProxyHandler(
{'http':http://lum-customer-estvpnserve-zone-residential-route_err-pass_dyn-country-us:[email protected]:22225'}))
print(opener.open('http://lumtest.com/myip.json').read())
如果 sys.version_info[0]==3:
导入 urllib.request
opener = urllib.request.build_opener(
urllib.request.ProxyHandler(
{'http':http://lum-customer-estvpnserve-zone-residential-route_err-pass_dyn-country-us:[email protected]:22225'}))
print(opener.open('http://lumtest.com/myip.json').read())

更多信息 用于网络搜刮的 15 大有效 Backconnect 和旋转代理.


网上搜刮主要有两种方法,一种是使用 Python 进行网络搜刮,另一种是使用开发的网络搜刮工具,下面我来详细介绍一下需要哪些工具。

返回菜单 ↑

使用 Python 的网络搜刮工具包和要点

无论如何,我想下面的前两个软件包已经融入了 Python 的大多数网络搜索工作中。它们配合得天衣无缝,都为网络搜索提供了宝贵的任务。

美丽汤

Beautiful Soup(可通过 pip 或 conda 安装为 "bs4")是一个非常有用的数据搜刮软件包。它之所以有用,是因为它可以轻松地处理刮取的数据,从典型的网页中提取出需要的内容,剔除不需要的内容。

当工人们从一个机位爬到另一个机位提取数据时,他们需要得到下载内容的指示。如果没有指令,他们就会下载全部内容,这样做效率太低、太笨重、太吵闹,根本不实用。

因此,"美丽汤 "可以告诉搜索工具从网页中提取哪些特定的数据点,例如,表格中某一列的单元格内的条目。

对于那些有 Python 使用经验并想根据自己的喜好用 Beautiful Soup 编写脚本的人来说,其他地方有更好的教程。(插入超链接)。不过,对于 HTML/CSS/JS 网页上的常见提取,也有许多脚本是公开可用的。

要求

如果您已经在使用 Python,那么您很可能已经安装了 "请求"。如果没有,请立即安装,因为它的实用性非常突出,甚至超出了本主题的范围。简而言之,"请求 "允许您以多种有用而灵活的方式与网页进行交互。

请求可以与网页交互,抓取某个网页的整个网站地图,甚至在提示时登录,因为 Beautiful Soup 会提取必要的数据。它是脚本在互联网上的导游:带它去需要去的地方,允许它访问自己无法访问的地方,并根据需要从一个地方移动到另一个地方,同时提供有关网站和网站地图的信息。

包裹

该包裹在功能上与 "美丽汤 "类似,都具有数据搜刮功能。简单地说,它能像 Beautiful Soup 一样,将刮擦器导向它想要的数据。它的优势在于可以自动浏览 XPath 和其他常见的 CSS 容器,因为这些容器通常会隐藏数据。

Beautiful Soup 也可以做到这一点,不过,在编写 Beautiful Soup 脚本时,必须让 Beautiful Soup 知道在哪里可以找到隐藏在 Xpath 中的数据。

您只需在网页上的 Xpath 中找到一个数据示例,但这需要右键单击页面,单击 "检查元素",然后查看 div,以便找到隐藏在其中的数据示例。下面是我写的一个脚本示例,实际上我必须使用 Selenium(稍后讨论):

我使用 Soup 的示例 - 通过 xpath 查找元素

td "是数据隐藏在 Xpath "tr "下的地方。一旦我找到了,剩下的就交给汤了。

不过,Parcel 可以跳过首先找到元素的步骤,因为它可以自己找到元素,如下所示 的部分.看起来必然的情况是,这个软件包比 Beautiful Soup 更笨重,可能会导致运行速度变慢,但它提供了更多的功能。

虽然《美丽汤》也相当简单,但它可能更适合初学者。两个都试试,看看哪个适合你。但对于初学者来说 这里是 一个使用请求和 Parcel 的公开爬虫演示。

更好的办法是 这里是 网站上有许多使用 Parcel 脚本的链接,并对 Parcel 进行了解释。由于 "美汤 "已经存在了很长时间,因此没有像这里一样有那么多现成的分配脚本。

JSON

JSON 作为 Python 软件包可能是保存受惊数据的最有效方法。无处不在的 "pandas "包提供了相同的功能,在此也值得一提。使用内置的 "re "包,脚本需要将刮擦到的数据写入一个文件,并将该文件保存在计算机上的某个位置。

Selenium

Selenium 虽然笨拙低效,但如果网页的编写方式是前面提到的程序无法理解的,它就能发挥重要作用。Selenium 并非任何类型的搜索器,但在紧要关头可用于将搜索器导航到它需要去的地方。Selenium 是一个浓缩在 Python 软件包中的网络浏览器。

它需要一个驱动程序,通常是一个 ChromeDriver,它将使用谷歌 Chrome 浏览器。这意味着,当您使用硒运行脚本时,您选择的浏览器会自动打开,它可以自行点击页面的某些部分、在某些表单中输入按键等。

它看起来很酷,但对于网络搜刮来说,它的主要目的是将网络搜刮器导航到网页上所需数据所在的特定区域。这是一种 "如果全部失败,那么其他全部失败 "的机制,因为上述软件包可以处理绝大多数网页。

相关: 为什么 Selenium 需要代理?

Scrapy

许多这类工具的问题是使用起来很麻烦。Scrapy 需要 Visual Studio 14.0,你可以通过下载 Visual Studio Build Tools 获得。像这样的扩展要求会增加遇到困难的几率。

编程环境、每个软件包以及您使用的机器或服务器的具体情况都会影响兼容性。不过请注意,Mac 和 Linux 在使用 PyPi 下载 Scrapy 时不会有问题。如果你不熟悉这个过程,下面是你的终端应该显示的样子:

安装 Scrapy

利用Scrapy内置的抓取和数据整理工具的脚本在Github、Stackoverflow和公共资源上随处可见。其中许多脚本,事实上是大多数脚本,可能并不像开箱即从终端运行那么简单。因此,对于非程序员或处于休眠期的程序员来说,这些软件可以派上用场、

相关: 安装 Python 以进行 Reddit 搜索

返回菜单 ↑

使用网络抓取软件工具抓取数据

有几种不同类型的 网络搜刮软件工具 有的需要一点编程知识,有的则完全不需要。有些需要一点编程知识,有些则完全不需要。

有些工具比其他工具具有更强的功能(例如,扫描多媒体,即 PDF、图像、音频和视频文件)。下面我们就来介绍几种比较流行的工具。

Orange - 免费开源网络爬取工具

免费数据挖掘网站 Orange 发现 这里 以及 Github 上的工具,是我个人最喜欢的从 Twitter 等特定网站抓取内容的工具。

它的主菜单是一个可视化路线图,你将在其中构建和实施整个流程。下面是我所做的一个数据挖掘项目的工作流程示例,旨在说明该软件的组织能力。

数据挖掘项目工作流程

使用 Orange 进行数据搜刮有几个好处。首先,存储、处理和保存数据变得异常简单。简短翔实的试用版公开提供了如何操作的说明。该软件必须遵守第三方的条件条款,这在网络搜刮方面是一个负担。

例如,在刮擦 Twitter 时,您需要一个 API 密钥--了解如何获取密钥 这里 (任何人都可以获得一个),但使用 API 会限制在一定时间内允许刮擦的数据量。另一方面,Orange 的优势在于允许用户在工作流程中执行任何脚本,因此上文提到的所有内容都可以整合到 Orange 中。

在软件中,你可以找到一个下载扩展的选项,其中包括一个数据搜刮扩展。完成下载后,将小工具添加到工作流程中就能轻松完成数据采集。

Octoparse:免费网络搜索程序

Octoparse 是一款基本免费的网络搜索软件,适用于所有主流操作系统。由于它为有能力的行业提供高级软件包,因此该软件的功能非常出色。

octoparse 网络爬虫

>> 免费下载 Octoparse

Octoparse 与其他只提供非常有限的免费抓取功能的软件不同,它为免费用户提供了丰厚的套餐:每次抓取不限页面、每次使用 10 个爬虫、每次导出 10,000 条记录。

记录数量是免费计划的关键限制:根据不同的项目,10,000 条记录可能绰绰有余,也可能远远不够。

无论如何,它与上述 Python 软件包一样有效,甚至可能更有效。它们的 产品概述 并不夸大其能力。只是要注意其局限性。

付费网络爬取工具

有一种网络搜刮软件很容易找到,但却不容易让人舍得花钱购买。这些程序适合企业使用。对于单个项目来说,价格不菲,但你确实能得到你所支付的,比如:

  • Import.io
  • mozenda.com
  • heliumscraper.com
  • ParseHub.com

全部获得 好评如潮但它们的价格都不菲。由于我没有使用它们的经验,所以我不会介绍它们,但选择权在你们。只需知道它们就在那里。

请注意:100% 免费网络抓取软件几乎从未兑现过承诺!

最专业、最苛刻、最有效的网络刮擦方法是使用具有高计算能力的服务器或 GPU 机器,使用手工编程的脚本进行刮擦。现在有数以百计的数据搜刮程序,只需在 Sourceforge 上快速搜索一下即可:

数据搜刮 Sourceforge

如果这些软件的功能看起来不切实际,那么它们很可能就是不切实际的。一定要检查软件是否有健康、最新的更新,评论是否支持开发者所说的软件功能,以及每周是否有健康的下载量。这些不符合上述标准的程序很可能没有恶意,但也可能只是垃圾程序。


因此,粗略地说,网络刮削有两条路可走。 编程、脚本路线提供了更多的自由、更多的个性化和更多的定制。 此外,还有软件路线,它提供了易用性和额外的计算能力。

这两种选择的可行性取决于一个人希望进行的编程量与希望自掏腰包进行的编程量。如前所述,对于真正有效的网络搜索软件来说,这种情况是不可避免的。

1 条评论
  1. 答复 blank
    索娜丽-斯里瓦斯塔瓦 4月 20, 2020 at 6:58 上午

    Python 无疑是最流行的网络搜刮方法之一,但 Ruby 也有一些优势。

    • 未评级
    • 未评级
    • 未评级
    • 未评级

发表回复

blank网络搜索代理 - 永远不会被阻止

在 Pinterest 上 Pin It

zh_CNChinese
私人代理评论