作为数据科学家,收集数据的最有效方法之一是借助Web抓取。网页抓取是一种将数据从Web捕获到我们本地计算机中的技术,以对它执行某些数据分析或数据可视化操作,以从该数据中获得有用的见解,也称为Web收集或数据提取。在本文中,将借助于两个名为Requests和bs4(Beautiful Soup)的金色库来抓取网络上的信息。选择这两个库的原因是它们比其他可用库更强大和灵活。
先决条件
HTML标签和CSS选择器的基础知识是必需的。
从Web捕获数据始于向Web发送请求要从哪个网站捕获数据。该任务是在“请求”模块的帮助下完成的。
要向网站提出请求,首先我们需要在python中导入请求模块。它不是python中的预内置模块。我们需要在pip的帮助下安装该软件包。
>>>导入请求#模块成功导入。
#提出要求
>>>响应= request.get
#响应变量将包含该请求对象的响应。
要检查请求对象的状态,我们需要在请求模块中使用status_code属性。
>>> response.status_code
如果状态代码值的结果为200,则您从网站获得了成功的响应。否则,您将从网页中得到不好的响应。问题可能出在Web URL或服务器问题上。
请求类型
借助请求模块,主要有六种类型的请求是可能的。
1. get()请求
2. post()请求
3. put()请求
4. 删除请求
5. head()请求
6. options()请求
向网页发出任何形式的请求的语法是-
requests.methodName('url')
但是,最流行的向网页发出请求的方法仅使用get()和post()方法。
要发送任何类型的敏感数据以及诸如登录凭据等URL之类的URL,则post()请求是更可取的,因为HTTP get()请求不会为已发送到网页的请求提供任何安全性。
R = requests.post
回应结果
我们的请求的响应内容是通过text属性获得的。
>>> response.text
由此可以得出结论,我们将网页内容下载到了本地计算机上。为了使内容更加灵活和有用,我们需要借助Beautiful Soup库。该库可帮助我们从可用数据中获得有用的见解。
#导入漂亮的汤库
>>> import bs4
为了使原始HTML数据更加美观,我们需要在某些解析器的帮助下解析内容。经常使用的解析器是-
1. xml文件
2. HTML5lib
3. XML解析器
4. HTML.parser
但是最灵活和最受欢迎的是lxml解析器。它可以非常快速有效地解析数据。
>>> soup_obj = bs4.BeautifulSoup(response.text,'lxml')
#soup_obj将使我们获取所需的结果
#为了使我们之前的数据更容易理解,我们将在汤匙上使用prettify()
>>> soup_obj.prettify()
因此,最后,我们又向前迈了一步。数据提取从此处开始-
要提取网页的名称,我们需要使用选择器以及适当的HTML标签来获得结果
>>> soup_obj.select('title')[0] .getText()
要从该网页提取所有链接,您需要找到该页面中的所有锚标记并将结果存储到变量中。借助for循环迭代,它完全可以打印结果
>>> links = soup_obj.find_all('a')
#find_all()将有助于获取所选标签的所有详细信息。
>>>对于链接中的链接:
... print(link.get('href'))
...
#get()用于从标记中提取特定内容
这是一个从网页获取链接的简单示例。如果您想从网页中提取其他数据,请选择与您的内容相关的适当标签,并在汤对象的帮助下获取结果。最初,这感觉很困难,但是当您在使用它时,绝对可以在一分钟内爬出任何类型的网站。
免责声明
未经管理员许可,请勿执行网站网页抓取。可能导致非法活动。公司中的数据科学家通常会在自己的网页和业务上进行网络抓取,而他们并未在其他公司网站上执行任何非法操作。所以要小心如果有任何原因造成您损坏,如果发生违法活动概不负责。
我在本教程中使用的网页可以随意刮取,因此完全没有问题。使用此类网站来学习或提高您的技能。
通过上述介绍,如何使用Python进行Web爬网相信大家已经清楚了吧,想了解更多关于Python的信息,请继续关注。