在当今的数据科学领域,专业人员常常需要掌握网络数据抓取的技能。这项技术指的是使用Selenium等工具从网页或网站收集相关数据。构建网络爬虫需要对Selenium和Python编程有所了解,这两种技术通常用于此类目的。
许多软件供应商通过高端工具提供网络数据抓取服务。然而,一些开源库允许用1-2行代码进行网络数据抓取,这对于研究和教育目的非常合适。本文将探讨最近引入的网络数据抓取工具PyScrappy,这是一个优秀的Python库,用于从电子商务、社交媒体、图片、歌曲、新闻等多个来源收集数据。跟随本文的步骤,将快速学习如何使用PyScrappy从不同网站抓取数据。
网络数据抓取是一种高效且有效的方法,用于在没有相关数据可用于模型构建时获取数据集。数据科学家经常使用Requests、Beautiful Soup、Selenium、Scrapy、Ixml等Python库之一或组合来从不同网站抓取一定量的数据,以构建他们的机器学习/深度学习模型的数据集。网络数据抓取技术解决了数据稀缺问题,使这些数据专业人员能够通过选择相关属性来更好地控制数据集的构建。
PyScrappy是另一个开源且灵活的Python数据抓取包,类似于上述提到的库。它允许用户快速从不同来源抓取数据。以下是PyScrappy的一些特点:
PyScrappy提供了八种不同的抓取器,方便地从各种来源抓取所需数据。这些抓取器包括:
PyScrappy需要Python >= 3.6。可以在GitHub上找到源代码。最新版本的二进制安装程序可以从PyPi下载,PyScrappy的文档可在此处获得。
让开始抓取教程,使用pip命令安装PyScrappy库。
pip install PyScrappy
本教程将带了解PyScrappy提供的四种类型的网络抓取器(电子商务、维基百科、社交媒体和新闻抓取器)。请注意,当在本地实例的Jupyter笔记本上运行代码时,这些网络抓取器将工作得很好,而不是在Colab笔记本或Kaggle笔记本上。
安装库后,首先,需要使用‘import’命令导入包。
import PyScrappy as ps
使用这个电子商务抓取器,创建一个PyScrappy库实例,与‘ECommerceScrapper’类交互。通过这个抓取器,可以轻松从不同的电子商务网站如阿里巴巴、Flipkart和Snapdeal抓取数据。
对于电子商务数据抓取,通过使用以下命令创建此类的一个对象:
obj = ps.ECommerceScrapper()
例如,想从Flipkart购买一台新的台式电脑,从Snapdeal购买一套不错的耳机。因此,当在Flipkart上搜索关键词‘PC’时,得到了几百个结果。在搜索结果页面上,‘Popularity’、‘Price’、‘Featured’和‘Date added’的过滤选项以及侧边栏类别选项(RAM、Storage、Color、CPU、Monitor display size等)可以帮助排序结果。然而,滚动浏览多个页面相当繁琐。因此,可以使用Flipkart电子商务抓取器帮助选择最佳产品,存储不同属性,如名称、价格(销售价格和原价)、描述和所有产品的评分。这些属性的值存储在一个单独的数据框中,无需浏览任何产品的单独页面。这样,可以在一张单独的表格中看到所有结果和所有规格/属性,这将使能够做出明智的购买决策。
让看看Pyscrappy电子商务抓取器是如何工作的。它的语法是:
obj.flipkart_scrapper (‘product_name’, n_pages)
将通过输入‘PC’作为‘product_name’和18页(即,在网站上搜索关键词后显示的页面数)来搜索台式电脑,并希望抓取所有结果。这在情况下可能会有所不同,具体取决于搜索的时间和地点。同时,请记住在请求抓取数据时对服务器要友好,即,不要在短时间内抓取太多数据。
obj.flipkart_scrapper (‘PC’, 18)
类似地,对于Snapdeal上的耳机搜索,将使用snapdeal_scrapper。它将帮助从Snapdeal网站抓取所需数据,包括类别如名称、价格、原价和评分。搜索关键词‘headphones’后,有五个搜索结果页面。语法如下:
obj.snapdeal_scrapper (‘product_name’, n_pages)
因此,将输入‘headphones’作为想要的产品,并将页数设置为‘5’,如下所示。
obj.snapdeal_scrapper (‘headphones’, 5)
以下是从Flipkart抓取的数据的样子:
以下是从Snapdeal抓取的数据的样子:
与之前的抓取器类似,社交媒体抓取器创建一个PyScrappy库实例以与类SocialMediaScrapper交互。通过这个抓取器,可以从三个社交媒体网站如Instagram、Twitter和YouTube抓取数据。对于这个特定的抓取器,将演示YouTube抓取器的使用。对于社交媒体数据抓取,再次从创建此类的一个对象开始:
obj = ps.SocialMediaScrapper()
通过这个YouTube抓取器,可以抓取YouTube数据属性,如‘视频标题’、‘视频URL’、视频获得的‘观看次数’以及发布后的日子。
obj.youtube_scrapper(‘url_of_video_sec’, n_pages)
请注意,可以抓取YouTube抓取器的任意多页。但请确保频道URL有效并以‘videos’结尾,因为只有来自视频部分的URL才能工作。只是为了演示目的抓取前两页。
df=obj.youtube_scrapper('https://www.youtube.com/c/Analyticsvidhya/videos', 2)
以下是数据框的样子:
类似地,可以使用Twitter抓取器针对特定的Twitter handle,收集有助于抓取Twitter数据的信息,如名称、Twitter Handle、发布时间、推文、回复计数、转发计数和点赞计数。此外,Instagram抓取器有助于抓取Instagram数据,如名称、帖子、关注者、关注、简介和标题。对于正确的抓取,重要的是Instagram账户是公开的。此外,Instagram可能会在一定数量的运行后要求登录以继续任务。
使用新闻抓取器,可以创建一个PyScrappy库实例以与类NewsScrapper交互。它有助于从www.inshorts.com抓取新闻数据,即标题、时间、日期和新闻。要抓取数据,需要输入类型和页数,如下所示。
obj.news_scrapper(‘genre’, n_pages)
可以输入任何接受的类型的关键词,如世界、国家、商业、体育、政治、技术、娱乐等。更多信息可在PyScrappy网站上找到。
让尝试抓取‘world’新闻的网站。使用以下命令:
obj.news_scrapper(1, 'world')
从网站抓取的数据如下所示:
这个维基百科抓取器创建一个PyScrappy库实例,与类WikipediaScrapper交互,有助于从维基百科抓取文本数据。在这里,可以以三种格式抓取数据:段落、标题和文本。对于维基百科数据抓取,首先需要创建此类的一个对象。
obj = ps.WikipediaScrapper()
para_scrapper():
如果想抓取整个段落,使用para_scrapper命令。必须输入打算从维基百科抓取数据的关键词,如下所示。
obj.para_scrapper('keyword')
让使用抓取器抓取关键词‘机器学习’。
obj.para_scrapper('machine learning')
使用上述命令,得到以下段落。
类似地,可以抓取所需关键词的标题和文本。只需要确保维基百科上有所需关键词的信息。
obj.header_scrapper('keyword')
obj.header_scrapper('machine learning')
obj.text_scrapper('keyword')
obj.text_scrapper('machine learning')
就是这样!希望喜欢这篇关于网络数据抓取和PyScrappy的文章。
看到了PyScrappy库提供的四种不同的抓取器。它绝对有助于抓取所需的数据,以实践和提高EDA/机器学习技能。只需要一行代码进行数据抓取,每个尝试的抓取器只需要两个输入。尽管这个库相对较新,但它似乎是一个有希望的工具,可以简化数据抓取过程,从而减少为模型构建收集数据所需的时间。那么,继续探索这个库和其他本教程未涵盖的抓取器吧。