旅游出行复苏,使用Beautiful Soup采集Airbnb旅馆数据

使用 Beautiful Soup 从 Airbnb 网站上抓取酒店信息

微信搜索关注《Python学研大本营》,加入读者群,分享更多精彩

当我们需要一个网站的数据,但是从网站提供商那里请求数据的过程很复杂时,最好的解决方案就是抓取。

Airbnb是为旅行者提供住宿服务的大型网站之一。由于规模庞大,住宿服务可分为别墅、酒店、树屋、沙漠之家等多种类型,在品类中可见一斑。

该网站当然提供了大量的酒店数据,但该网站的架构对于初学者来说相当复杂。另一方面,Airbnb使用各种 javascript 来访问数据,因此您的抓取过程可能并不容易。(我写这篇文章是在 2023 年 1 月)。

起初,我认为抓取Airbnb网站会像抓取其他酒店网站一样简单,但当我开始编写代码并在网站上的每个元素中搜索类时,我意识到我最初的想法被误导了。让我在下面解释我的过程。

您应该采取的第一步是安装所需的库,特别是 beautifulsoup 库,或者您可以使用以下语法:

# Instalasi beautifulsoup
pip install beautifulsoup4 

重要的是要注意,您还应该安装其他库,例如 requests,它将允许您发送 HTTP 请求并检索网站的 HTML。

pip install requests

接下来,您将导入其他基础库,例如下面的代码(如果没有,请先安装)。

from bs4 import BeautifulSoup # Beautifulsoup
import requests # for access the link

其实Beautiful Soup的基础使用还是比较简单的,写几行代码就可以理解。在这种情况下,我要演示的抓取是在一个页面上(当然,这并不是说我想宣传那家特定的酒店)。

Villa Dewi Laksmi 将是我们将从中获取信息的示例之一。最重要的是要知道我们将从网站页面中提取的组件和类/id 名称。

在这种情况下,我想从页面中提取标题,标题位于类为“_fecoyn4”的 h1 中。您可以尝试的语法如下:

url = 'https://www.airbnb.co.id/rooms/2046355' #Link hotel
respons = requests.get(url) #Send request to url
soup = BeautifulSoup(respons.content, 'html5lib') #Soup the site
judul = soup.find('h1',class_='_fecoyn4').text #Take header 1 on the site

但是结果会是这样的:

这意味着我们尝试检索的对象没有成功检索任何内容,因为据说我们正在尝试访问“ NoneType ”的属性。如果您尝试打印( title ),结果也将为空。

那么,有什么办法呢?我们将检索网站的原始 html。您可以使用以下语法来执行此操作。

text = soup.get_text()
text #Take all text from html

结果你会得到这样的:

当然,如果不使用这个原始 html 将没有用。这里可以使用的技巧是使用正则表达式来提取所需的信息(在本例中我们将提取标题)。可以做的第一个技巧是找到我们要查找的关键字,在本例中为“ Villa Dewi Laksmi ”,然后在原始 html 输出上执行CTRL+F并搜索上面的句子,然后您会找到{ “__typename”:“PdpTitleSection”,“title”:“Villa Dewi Laksmi”。从这里我们可以创建一个正则表达式,如下所示:

regex = r'"__typename":"PdpTitleSection","title":"(.*?)"'
match = re.search(regex, text)
if match:
    print(match.group(1))

上述方法也可用于提取价格、位置、主机名和其他信息,只要它存在于原始 html 文本中即可。上面的语法也可以用在其他产品页面上,因为标题代码在每个页面上都是相似的。

我们可以从中得出的结论是,尽管网站可能难以抓取,但总有一种方法可以提取您需要的数据。但是,如果您有时间和意图,最好联系网站所有者并以尊重的方式请求数据:)

如果您喜欢我的文章,请喜欢并关注我。

推荐书单

《图解数据智能》

《图解数据智能》是一本为数字资源的对接方、分配方以及广大的入门学习者提供相关数据智能概念的科普读物。书中各个概念之间相对独立,读者可以将其作为一本检索用的工具书籍,也可以根据自己的兴趣灵活查阅相关篇章。

无论你是数智化领域的专业从业人员,还是刚刚毕业想要进入该领域的技术小白,抑或是正面临着数字化转型的政府或企业人员,或者是千千万万个生活在这个数智化社会中的普通人,都可以阅读此书,你将从酣畅淋漓的技术释疑和轻松有趣的漫画解读中,找到自己的答案。

图解数据智能【图片 价格 品牌 评论】-京东京东JD.COM是国内专业的网上购物商城,为您提供图解数据智能价格、图片、品牌、评论、等相关信息.https://item.m.jd.com/product/10067743502433.html

 

精彩回顾

《Pandas1.x实例精解》新书抢先看!

【第1篇】利用Pandas操作DataFrame的列与行

【第2篇】Pandas如何对DataFrame排序和统计

【第3篇】Pandas如何使用DataFrame方法链

【第4篇】Pandas如何比较缺失值以及转置方向?

【第5篇】DataFrame如何玩转多样性数据

【第6篇】如何进行探索性数据分析?

【第7篇】使用Pandas处理分类数据

【第8篇】使用Pandas处理连续数据

【第9篇】使用Pandas比较连续值和连续列

【第10篇】如何比较分类值以及使用Pandas分析库

微信搜索关注《Python学研大本营》

访问【IT今日热榜】,发现每日技术热点

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值