当前位置:首页 > 娱乐

【爬虫社区】网络爬虫——从网站中提取有用的数据

1 什么是网络爬虫

网络爬虫是一种从将非结构化数据转换为结构化数据的网站提取数据的技术。

网络爬虫的用途是从网站提取数据,提取的数据可以存储到本地文件并保存在系统中,也可以将其以表格的形式存储到数据库中。网络爬虫使用HTTP或Web浏览器直接访问万维网(WWW)。网络爬虫或机器人抓取网页的过程是一个自动化流程。

抓取网页的过程分为获取网页、提取数据。Web抓取程序可以获取网页,它是网络爬虫的必需组件。在获取网页后,就需要提取网页数据了。我们可以搜索、解析,并将提取的数据保存到表格中,然后重新整理格式。

2 数据提取

本节我们学习数据提取。我们可以使用Python的BeautifulSoup库进行数据提取。这里还需要用到Python库的Requests模块。

运行以下命令以安装Requests和BeautifulSoup库。

$ pip3 install requests $ pip3 install beautifulsoup4

2.1 Requests库

使用Requests库可以易懂的格式在Python脚本中使用HTTP,这里使用Python中的Requests库获取网页。Requests库包含不同类型的请求,这里使用GET请求。GET请求用于从Web服务器获取信息,使用GET请求可以获取指定网页的html内容。每个请求都对应一个状态码,状态码从服务器返回,这些状态码为我们提供了对应请求执行结果的相关信息。以下是部分状态码。

  • 200:表示一切正常并返回结果(如果有)。
  • 301:表示如果服务器已切换域名或必须更改端点名称,则服务器将重定向到其他端点。
  • 400:表示用户发出了错误请求。
  • 401:表示用户未通过身份验证。
  • 403:表示用户正在尝试访问禁用的资源。
  • 404:表示用户尝试访问的资源在服务器上不可用。

2.2 BeautifulSoup库

BeautifulSoup也是一个Python库,它包含简单的搜索、导航和修改方法。它只是一个工具包,用于从网页中提取所需的数据。

要在脚本中使用Requests和BeautifulSoup模块,必须使用import语句导入这两个模块。现在我们来看一个解析网页的示例程序,这里将解析一个来自百度网站的新闻网页。创建一个脚本,命名为,并在其中写入以下代码。

import requests from bs4 import BeautifulSoup page_result = reque(';) parse_obj = BeautifulSou, ';) print(parse_obj)

运行脚本程序,如下所示。

student@ubuntu:~/work$ python3 Output: <!DOCTYPE html> <html xmlns:fb="; xmlns:og=";> <head> <meta charset="utf-8"/> <meta content="IE=edge" http-equiv="X-UA-Compatible"/> <meta content="app-id=342792525, app-argument=imdb:///?src=mdot" name="apple-itunes-app"/> <script type="text/javascript">var IMDbTimer={starttime: new Date().getTime(),pt:'java'};</script> <script> if (typeof uet == 'function') { uet("bb", "LoadTitle", {wb: 1}); } </script> <script>(function(t){ = t.events || {})["csm_head_pre_title"] = new Date().getTime(); })(IMDbTimer);</script> <title>Top News - IMDb</title> <script>(function(t){ = t.events || {})["csm_head_post_title"] = new Date().getTime(); })(IMDbTimer);</script> <script> if (typeof uet == 'function') { uet("be", "LoadTitle", {wb: 1}); } </script> <script> if (typeof uex == 'function') { uex("ld", "LoadTitle", {wb: 1}); } </script> <link href="; rel="canonical"/> <meta content="; property="og:url"> <script> if (typeof uet == 'function') { uet("bb", "LoadIcons", {wb: 1}); }

上面的示例程序抓取了一个网页,并使用BeautifulSoup对其进行了解析。首先导入了requests和BeautifulSoup模块,然后使用GET请求访问URL,并将结果分配给page_result变量,接着创建了一个BeautifulSoup对象parse_obj,此对象将requests的返回结果作为参数,然后使用解析该页面。

现在我们将从类和标签中提取数据。转到Web浏览器,右击要提取的内容并向下查找,找到“检查”选项,单击它将获得类名。在程序中指定这个类名,并运行脚本。创建一个脚本,命名为ex,并在其中写入以下代码。

import requests from bs4 import BeautifulSoup page_result = reque(';) parse_obj = BeautifulSou, ';) top_news = (class_='news-article__content') print(top_news)

运行脚本程序,如下所示。

student@ubuntu:~/work$ python3 ex Output : <div class="news-article__content"> <a href="/name/nm4793987/">Issa Rae</a> and <a href="/name/nm0000368/">Laura Dern</a> are teaming up to star in a limited series called "The Dolls" currently in development at <a href="/company/co0700043/">HBO</a>.<br/><br/>Inspired by true events, the series recounts the aftermath of Christmas Eve riots in two small Arkansas towns in 1983, riots which erupted over Cabbage Patch Dolls. The series explores class, race, privilege and what it takes to be a "good mother."<br/><br/>Rae will serve as a writer and executive producer on the series in addition to starring, with Dern also executive producing. <a href="/name/nm3308450/">Laura Kittrell</a> and <a href="/name/nm4276354/">Amy Aniobi</a> will also serve as writers and coexecutive producers. <a href="/name/nm0501536/">Jayme Lemons</a> of Dern’s <a href="/company/co0641481/">Jaywalker Pictures</a> and <a href="/name/nm3973260/">Deniese Davis</a> of <a href="/company/co0363033/">Issa Rae Productions</a> will also executive produce.<br/><br/>Both Rae and Dern currently star in HBO shows, with Dern appearing in the acclaimed drama "<a href="/title/tt3920596/">Big Little Lies</a>" and Rae starring in and having created the hit comedy "<a href="/title/tt5024912/">Insecure</a>." Dern also recently starred in the film "<a href="/title/tt4015500/">The Tale</a>, </div>

上面的示例程序首先导入了requests和BeautifulSoup模块,然后创建了一个requests对象并为其分配了一个URL,接着创建了一个BeautifulSoup对象parse_obj。此对象将requests的返回结果作为参数,然后使用解析页面。最后,使用BeautifulSoup的find()方法从news-article__content类中获取内容。

现在我们来看一个从特定标签中提取数据的示例程序,此示例程序将从<a>标签中提取数据。创建一个脚本,命名为ex,并在其中写入以下代码。

import requests from bs4 import BeautifulSoup page_result = reque(';) parse_obj = BeautifulSou, ';) top_news = (class_='news-article__content') top_news_a_content = ('a') print(top_news_a_content)

运行脚本程序,如下所示。

student@ubuntu:~/work$ python3 ex Output: [<a href="/name/nm4793987/">Issa Rae</a>, <a href="/name/nm0000368/">Laura Dern</a>, <a href="/company/co0700043/">HBO</a>, <a href="/name/nm3308450/">Laura Kittrell</a>, <a href="/name/nm4276354/">Amy Aniobi</a>, <a href="/name/nm0501536/">Jayme Lemons</a>, <a href="/company/co0641481/">Jaywalker Pictures</a>, <a href="/name/nm3973260/">Deniese Davis</a>, <a href="/company/co0363033/">Issa Rae Productions</a>, <a href="/title/tt3920596/">Big Little Lies</a>, <a href="/title/tt5024912/">Insecure</a>, <a href="/title/tt4015500/">The Tale</a>]

上面的示例程序从<a>标签中提取数据。这里使用find_all()方法从news-article__content类中提取所有<a>标签数据。

3 从维基百科网站抓取信息

本节我们将学习一个从维基百科网站获取舞蹈种类列表的示例程序,这里将列出所有古典印度舞蹈。创建一个脚本,命名为ex,并在其中写入以下代码。

import requests from bs4 import BeautifulSoup page_result = reque(';) parse_obj = BeautifulSou, ';) h_obj = (class_='hlist noprint') h_obj_a_content = ('a') print(h_obj) print(h_obj_a_content)

运行脚本程序,如下所示。

student@ubuntu:~/work$ python3 ex

输出如下。

<div class="hlist noprint" id="portals-browsebar" style="text-align: center;"> <dl><dt><a href="/wiki/Portal:Contents/Portals" title="Portal:Contents/Portals">Portal topics</a></dt> <dd><a href="/wiki/Portal:Contents/Portals#Human_activities" title="Portal:Contents/Portals">Activities</a></dd> <dd><a href="/wiki/Portal:Contents/Portals#Culture_and_the_arts" title="Portal:Contents/Portals">Culture</a></dd> <dd><a href="/wiki/Portal:Contents/Portals#Geography_and_places" title="Portal:Contents/Portals">Geography</a></dd> <dd><a href="/wiki/Portal:Contents/Portals#Health_and_fitness" title="Portal:Contents/Portals">Health</a></dd> <dd><a href="/wiki/Portal:Contents/Portals#History_and_events" title="Portal:Contents/Portals">History</a></dd> <dd><a href="/wiki/Portal:Contents/Portals#Mathematics_and_logic" title="Portal:Contents/Portals">Mathematics</a></dd> <dd><a href="/wiki/Portal:Contents/Portals#Natural_and_physical_sciences" title="Portal:Contents/Portals">Nature</a></dd> <dd><a href="/wiki/Portal:Contents/Portals#People_and_self" title="Portal:Contents/Portals">People</a></dd> In the preceding example, we extracted the content from Wikipedia. In this example also, we extracted the content from class as well as tag. ....

1.《【爬虫社区】网络爬虫——从网站中提取有用的数据》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。

2.《【爬虫社区】网络爬虫——从网站中提取有用的数据》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。

3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/yule/3209219.html

上一篇

【伍佰亿服装网】壹周潮话题 | 水果姐8月、Gigi 9月......处女座宝宝们来了

下一篇

【丁锦昊】可能有的人真的不配去旅行

【爬虫社区】手把手教你用Python爬虫爬取facebook脸书页面(附代码)

  • 【爬虫社区】手把手教你用Python爬虫爬取facebook脸书页面(附代码)
  • 【爬虫社区】手把手教你用Python爬虫爬取facebook脸书页面(附代码)
  • 【爬虫社区】手把手教你用Python爬虫爬取facebook脸书页面(附代码)

【爬虫社区】R语言爬虫系列|动态数据抓取范例

  • 【爬虫社区】R语言爬虫系列|动态数据抓取范例
  • 【爬虫社区】R语言爬虫系列|动态数据抓取范例
  • 【爬虫社区】R语言爬虫系列|动态数据抓取范例

【爬虫社区】爬虫实战篇:如何爬取全网1200本Python书

  • 【爬虫社区】爬虫实战篇:如何爬取全网1200本Python书
  • 【爬虫社区】爬虫实战篇:如何爬取全网1200本Python书
  • 【爬虫社区】爬虫实战篇:如何爬取全网1200本Python书

【爬虫社区】Python入门(一):爬虫基本结构&简单实例

  • 【爬虫社区】Python入门(一):爬虫基本结构&简单实例
  • 【爬虫社区】Python入门(一):爬虫基本结构&简单实例
  • 【爬虫社区】Python入门(一):爬虫基本结构&简单实例
【爬虫社区】谢佳标:RCurl爬虫和Shiny包在游戏行业的应用

【爬虫社区】谢佳标:RCurl爬虫和Shiny包在游戏行业的应用

爬虫社区相关介绍,【数盟致力于成为最卓越的数据科学社区,聚焦于大数据、分析挖掘、数据可视化领域,业务范围:线下活动、在线课程、猎头服务、项目对接】 :010 分享嘉宾 谢佳标准音乐趣味游戏高级数据分析师 共享主要内容 ...

爬虫社区 虎扑社区论坛数据爬虫分析报告

爬虫社区 虎扑社区论坛数据爬虫分析报告

以下是虎扑官方介绍: 虎扑是一个面向年轻男性的专业网站,涵盖篮球、足球、F1、NFL等赛事的原创新闻栏目和视频报道。它有一个大型的生活/影视/电竞/汽车/数字在线交流社区,对谈论体育充满兴趣。 二、数据描述 使用的数据源: 2018/1/1~1/19的两个半星期,虎扑论坛步行街各分区的帖子全部被撤,关注度极低的帖子总数为3.3W...