使用python学习网络抓取的初学者指南使用 Python 进行网页抓取想象一下,你必须从网站上提取大量数据,并且希望尽快完成。如果不手动访问每个网站并获取数据,你将如何做到这一点? 好吧,“Web Scraping”就是网页抓取才是答案。不过网页抓取只是使这项工作变得更容易和更快。 下面我将简要说下网页抓取,并通过演示如何从网站中提取数据。 内容梗概如下:为什么要使用网页抓取?什么是网页抓取?网页抓取合法吗?为什么 Python 对网页抓取有好处?你如何从网站上抓取数据?用于 Web Scraping 的库网页抓取示例:抓取 Flipkart 网站为什么要使用网页抓取?网页抓取用于从网站收集大量信息。但是为什么有人必须从网站上收集如此庞大的数据呢?要了解这一点,让我们看一下网络抓取的应用:价格比较: ParseHub 等服务使用网络抓取从在线购物网站收集数据,并使用它来比较产品价格。电子邮件地址收集:许多使用电子邮件作为营销媒介的公司,使用网络抓取来收集电子邮件 ID,然后发送大量电子邮件。社交媒体抓取:网络抓取用于从社交媒体网站(如 Twitter)收集数据,以了解趋势。研究与开发:网络抓取用于从网站收集大量数据(统计数据、一般信息、温度等),这些数据经过分析并用于进行调查或用于研发。职位列表:从不同的网站收集有关职位空缺、面试的详细信息,然后将其列在一个地方,以便用户轻松访问。什么是网页抓取?网页抓取是一种用于从网站中提取大量数据的自动化方法。网站上的数据是非结构化的。网络抓取有助于收集这些非结构化数据并将其以结构化形式存储。有多种方法可以抓取网站,例如在线服务、API 或编写自己的代码。在本文中,我们将看到如何使用 python 实现网页抓取。 网页抓取合法吗?谈到网页抓取是否合法,有些网站允许网页抓取,有些则不允许。要知道一个网站是否允许网页抓取,你可以查看该网站的“robots.txt”文件。你可以通过将“/robots.txt”附加到要抓取的 URL 来找到此文件。对于这个例子,我正在抓取 Flipkart 网站。所以,要查看“robots.txt”文件,URL 是www.flipkart.com/robots.txt。为什么 Python 对网页抓取有好处?这是 Python 的特性列表,这使得它更适合网络抓取。易用性: Python 编程易于编码。你不必添加分号“;” 或任何地方的大括号“{}”。这使它不那么凌乱且易于使用。大量库: Python 拥有大量库,例如Numpy、Matlplotlib、Pandas等,它们为各种目的提供方法和服务。因此,它适用于网页抓取和提取数据的进一步操作。动态类型:在 Python 中,你不必为变量定义数据类型,你可以在需要的地方直接使用变量。这可以节省时间并使你的工作更快。易于理解的语法: Python 语法易于理解,主要是因为阅读 Python 代码与阅读英文语句非常相似。它富有表现力且易于阅读,Python 中使用的缩进还有助于用户区分代码中的不同范围/块。 小代码,大任务:网页抓取用于节省时间。但是如果你花更多的时间写代码有什么用呢?好吧,你不必。在 Python 中,你可以编写小代码来完成大任务。因此,即使在编写代码时也可以节省时间。社区:如果你在编写代码时遇到困难怎么办?你不必担心。Python 社区拥有最大、最活跃的社区之一,你可以在其中寻求帮助。你如何从网站上抓取数据?当你运行用于网页抓取的代码时,会向你提到的 URL 发送一个请求。作为对请求的响应,服务器发送数据并允许你读取 HTML 或 XML 页面。然后,代码解析 HTML 或 XML 页面,找到数据并提取它。 要使用 python 网络抓取来提取数据,你需要遵循以下基本步骤:找到你要抓取的网址检查页面找到要提取的数据编写代码运行代码并提取数据以所需的格式存储数据 现在让我们看看如何使用 Python 从 Flipkart 网站中提取数据。用于 Web Scraping 的库 众所周知,Python 有各种各样的应用程序,并且有不同的库用于不同的目的。在我们的进一步演示中,我们将使用以下库:Selenium:Selenium 是一个 Web 测试库。它用于自动化浏览器活动。BeautifulSoup: Beautiful Soup 是一个用于解析 HTML 和 XML 文档的 Python 包。它创建有助于轻松提取数据的解析树。Pandas: Pandas 是一个用于数据操作和分析的库。它用于提取数据并以所需的格式存储。 网页抓取示例:抓取 Flipkart 网站先决条件:安装了Selenium、BeautifulSoup、 pandas库的 Python 2.x 或 Python 3.x谷歌浏览器Ubuntu 操作系统让我们开始吧!第 1 步:找到你要抓取的 URL对于这个例子,我们将抓取Flipkart网站以提取笔记本电脑的价格、名称和评级。此页面的 URL 是https://www.flipkart.com/laptops/~buyback-guarantee-on-laptops-/pr?sid=6bo%2Cb5g&uniqBStoreParam1=val1&wid=11.productCard.PMU_V2。第 2 步:检查页面数据通常嵌套在标签中。因此,我们检查页面以查看我们要抓取的数据嵌套在哪个标签下。要检查页面,只需右键单击元素并单击“检查”。当你单击“检查”选项卡时,你将看到一个“浏览器检查器框”打开。第 3 步:找到要提取的数据让我们分别提取“div”标签中的价格、名称和评级。第 4 步:编写代码首先,让我们创建一个 Python 文件。为此,请在 Ubuntu 中打开终端并键入带有 .py 扩展名的 gedit <你的文件名>。我将把我的文件命名为“web-s”。这是命令:1gedit web-s.py现在,让我们在这个文件中编写代码。 首先,让我们导入所有必要的库:123from selenium import webdriverfrom BeautifulSoup import BeautifulSoupimport pandas as pd要将 webdriver 配置为使用 Chrome 浏览器,我们必须将路径设置为 chromedriver1driver = webdriver.Chrome("/usr/lib/chromium-browser/chromedriver")参考以下代码打开网址:1234products=[] #List to store name of the productprices=[] #List to store price of the productratings=[] #List to store rating of the productdriver.get("https://www.flipkart.com/laptops/~buyback-guarantee-on-laptops-/pr?sid=6bo%2Cb5g&amp;amp;amp;amp;amp;amp;amp;uniq")现在我们已经编写了打开 URL 的代码,是时候从网站中提取数据了。如前所述,我们要提取的数据嵌套在 <div> 标签中。因此,我将找到具有相应类名的 div 标签,提取数据并将数据存储在变量中。参考下面的代码:123456789content = driver.page_sourcesoup = BeautifulSoup(content)for a in soup.findAll('a',href=True, attrs={'class':'_31qSD5'}):name=a.find('div', attrs={'class':'_3wU53n'})price=a.find('div', attrs={'class':'_1vC4OE _2rQ-NK'})rating=a.find('div', attrs={'class':'hGSR34 _2beYZw'})products.append(name.text)prices.append(price.text)ratings.append(rating.text)第 5 步:运行代码并提取数据要运行代码,请使用以下命令:1python web-s.py第 6 步:以所需格式存储数据提取数据后,你可能希望以某种格式存储它。此格式因你的要求而异。对于此示例,我们将以 CSV(逗号分隔值)格式存储提取的数据。为此,我将以下行添加到我的代码中:12df = pd.DataFrame({'Product Name':products,'Price':prices,'Rating':ratings})df.to_csv('products.csv', index=False, encoding='utf-8')现在,我将再次运行整个代码。创建文件名“products.csv”,该文件包含提取的数据。希望以上内容能帮助到你!
本文出自快速备案,转载时请注明出处及相应链接。