网络抓取:与美丽的套件构建基于HTML的网络机器人

它讨论了使用“ BeautifulSoup”的Web craping和方法,并请求模块创建网站机器人以获取Web数据。

正如上一章第3章中提到的关于“如何写,解析,读取带有刮擦数据的CSV文件”中提到的,我们将讨论如何指定Web数据以刮擦。这是因为这是我们喜欢学习Python作为数字营销人员的关键目的之一。

因此,在这个针对数字营销人员4的Python教程中,我将带您了解基本概念和方法。它是使用BeautifulSoup和您需要知道的请求来指定Web数据和刮擦。最好在这部分中了解如何阅读HTML,CSS和JavaScript。但是,如果您还没有的话,这完全可以,因为目的是找到目前的数据。而且,它也用于学习一些方法以将特定数据用于数字营销目的。

在Python教程课上,我将以RING.com为例编写代码并刮擦所有最新的报价和定价。到Python教程结束时,您可以确定您的预期数据元素在页面上的位置,并在几分钟内全部刮擦。

目录:创建一个网站机器人,以使用Beautifutsoup刮擦特定网站数据
确定目标页面上的数据部分
指定数据以解析和刮擦
创建一个循环以刮擦所有部分指定的数据
通过某些部分传递丢失的数据
将数据保存到CSV文件中
完整的Python网站bot脚本
确定目标页面上的数据部分

正如您在这里看到的那样,有许多戒指产品捆绑包和优惠可能不规则地更新。如果您是环形经销商或Ring的竞争对手,那么您绝对希望调整产品营销和定价策略,以便如果销售对您的业务至关重要,将不会影响转换率。

要查找数据位置,我们需要使用浏览器开发人员工具并检查Web源代码。我以Chrome为例,您可以选择一个产品和右键单击以选择检查。

我们的目标是从头条新闻,子标题,常规价格,促销价格,描述和产品URL中刮下数据。基于此数据刮擦目标,我们尝试查看代码并找出本节或我们所谓的部门,其中包括我们针对刮擦的所有数据:

<div class =“ PLP产品” ……..

您知道产品信息的休息都以相同的部门开头:

<div class =“ PLP产品” ……..

要查看这是否正确,我们可以开始使用方法:find()和find_all()

(注意:我不会详细介绍如何导入美丽的小组,请求模块。如果您想了解更多信息,请检查以前的文章:

http://www.easy2digital.com/automation/data/python-tutorial-for-digital-marketers-2-web-scraping-with-beautifulsoup-requests-sublime-text/-sublime-text/

网络刮擦 – 查找并查找所有功能

首先,让我们创建称为ringweb,ringoffers和ringproduct的变量

ringweb = requests.get(’https://ring.com/collections/offers’).text

ringoffers = beautifulsoup(ringweb,’lxml’)

Find()方法用于定位您的刮擦动作,并从该位置获取数据的响应。作为路径,<div class =“ plp-product” ……

因此我们可以编写一行代码

ringproduct = ringoffers.find(’div’,类_ =’plp-product’)

在这一行代码中,我们定义一个变量,RingRproduct代表Ringoffers下的目标路径的数据。只要记住,在Python方法中,我们通常使用逗号将HTML源代码分开,并为每个源代码使用单个引号。关于类,我们需要使用class_ =,因为class =代表python中的其他功能。

如果我们尝试将其打印出来并命令B,则可以看到这些代码行可以抓住部分数据。它正在工作。

由于ring.com不仅有一套捆绑包可以在报价页面上出售,因此我们需要使用其他方法find_all()。我们只需要用find_all()替换find(),您可以看到生成所有捆绑部分数据。

指定数据以解析和刮擦

现在,我们开始解析我们要刮擦的目标部分数据和特定数据,如我们本文前面提到的那样。

首先,这是产品标题

我们可以检查并从开发人员工具中查看,RING提供页面H4仅表示捆绑产品的标题,因此我们可以直接编写一系列代码:

标题= ringproduct.h4.text
打印(标题)

在Python中,我们通过使用DOT来拆分路径,除了方法中的路径。当我们刮擦字符串数据时,因此我们可以在H4之后使用文本。

然后,其子程度和描述

我们可以看到有两个使用H6的地方(子标题和描述)。与标题不同,我们需要使用find()方法并找到特定的H6数据

子标线= ringproduct.find(’H6’,类_ =’sub-title size-xs’)。
打印(子标签)

描述= ringproduct.find(’H6’,类_ =’product-description font__exlight’)。
打印(描述)

您会发现并非所有产品捆绑包都有子标题。在Python中,我们需要传递丢失的数据,以避免运行脚本文件时出现错误。我会稍后谈论它。

然后,这是常规价格和晋升价格

paster_price = ringproduct.find(’span’,class _ =’常规价格’)。
打印(propers_price)

lustron_price = ringproduct.find(’span’,类_ =’compare-price’)。
打印(常规_price)

最后但并非最不重要的是,这是产品降落URL

代码行:

product_url = ringproduct.a [‘href’]
product_link = f’https://ring.com {product_url}’
打印(product_link)

基本上,每个产品捆绑包的源代码中只有一个唯一的URL。例如,产品入门套件着陆路径是收集/优惠/产品/入门套件。因此,我们可以忽略我们旨在刮擦和直接利用[]的价值,在一节中刮擦HREF值:product_url = ringproduct.a [‘href’]

但是,如果我们将这些数据路径刮入文件中,则无法在页面上打开并访问它们。因此,为了显示完整的URL,我们可以创建一个可变product_link,并通过使用f”并将product_url插入{}来利用格式功能。

product_link = f’https://ring.com {product_url}’

如果我们尝试将其打印出来,则可以证明它有效。

创建一个循环以刮擦所有截面的数据

这些代码线正在工作,因此我们可以将其推出以批量刮擦所有数据。为此,我们需要用于… in和find_all方法:

对于ringoffers.find_all(’div’,类_ =’plp-product’)的ringproduct:

由于此代码处于父级,因此我们需要在此代码和缩进子女线的末尾添加一个结肠。

如果我们尝试打印出来,我们可以看到下面列出的结果,其中包括所有产品捆绑信息。

通过某些部分传递丢失的数据

您可能会知道,并非所有产品捆绑包都有子标签和促销价格,因此,如果您从Python遇到此响应时,请尝试运行子程度和促销价格行:对象没有属性“文本”,它将停止刮擦过程。

这是编码世界的反映,因为并非所有信息都按顺序和结构化。因此,我们需要使用尝试/除外,除非经过此操作。

副标题:

尝试:
子标线= ringproduct.find(’H6’,类_ =’sub-title size-xs’)。
除例外为E:
子标线=无

促销价格:

尝试:
lustron_price = ringproduct.find(’span’,类_ =’compare-price’)。

除例外为E:
lustron_price =无

对于除异常以外的可变值,您可以将其设置为易于理解,例如NONE,0,“ NA”,ETC。

我没有设置,所以您可以看到响应结果

将数据保存到CSV文件中

现在,Python脚本已经准备好了,现在该将刮擦数据保存到一个地方,这可以是本地文件或在线服务器。

我将详细介绍CSV文件,因为我之前谈到了这一课。如果您有兴趣,请查看其他文章

http://www.easy2digital.com/automation/data/python-tutorial-for-digital-marketers-3-how-to-write-parse-parse-parse-parse-read-csv-files-with-scraped-data/

执行代码后,下面的CSV文件将出现,并存储我们旨在刮擦的所有指定数据。

完整的Python网站bot脚本

如果您想拥有网站机器人的Python脚本的完整版本,请通过添加消息第4章订阅我们的新闻通讯。我们将立即将脚本发送到您的邮箱。

这么简单,对吧?希望您喜欢阅读第4章:创建一个网站机器人,使用BeautifulSoup刮擦特定的网站数据。如果这样做,请通过执行下面列出的一件事情来支持我们,因为它总是有助于我们的频道。

支持并通过PayPal(PayPal.me/Easy2Digital)向我们的渠道捐款
订阅我的频道,并打开通知铃easy2Digital YouTube频道。
关注和喜欢我的页面Easy2Digital Facebook页面
与主题标签#Easy2Digital在您的社交网络上分享文章
购买具有easy2digital 10%折扣代码的产品(Easy2DigitalNewBuyers2021)
您注册我们的每周新闻通讯,以收到Easy2Digital的最新文章,视频和折扣代码
订阅我们通过Patreon每月会员资格以享受独家福利(www.patreon.com/louisludigital)

除了刮擦HTML和XML Web数据外,如果您有兴趣学习获取只能通过API访问的一些平台数据,请查看本文,我们将从YouTube频道开始。

希望您喜欢阅读。如果您这样做,请通过执行下面列出的一件事情来支持我们,因为它总是有助于我们的频道。