如何在10分钟内用Python建立一个网络搜刮包来提取超链接?

169 阅读5分钟

在目前的网页设计中,我们发现网页与各种超链接有关。简而言之,超链接是指链接到其他网页的网页,其中网页的链接将以下划线文字的形式给出,网页的浏览者可以重定向到需要的链接。因此,本文简要介绍了为提取网页中的各种超链接而创建的一个自定义网络刮削模块。

目录

  1. 网络抓取简介
  2. 创建一个自定义的python(py)文件
  3. 执行自定义的python(py)文件
  4. 摘要

网络抓取简介

Web Scraping是一个从网络上合法收集所需格式的数据或信息的过程,Python通过提供强大而有效的模块和库为网络上的数据收集提供了广泛的支持。

在Python中,有各种网络搜刮包。Selenium、UrlLib和BeautifulSoup(bs4)是其中一些模块,仅举几例。在这些流行的模块中,本文通过使用BeautifulSoup的各种内置功能实现了一个自定义的python包,以提取单个网页中的超链接。

任何通过网络进行数据收集的python包都必须坚持合法的数据收集,要求从特定的网页上收集数据。

创建一个自定义的Python(py)文件

一个自定义的python文件可以很容易地在google colab或jupyter中创建。关于colab,因为它是基于云的工作环境之一,我们首先可以从一个ipynb文件开始。

ipynb文件的前几个单元应该包括执行任务所需库的导入语句。在这篇文章中,我们使用Beautiful Soup构建了定制的网络搜刮器,为此导入的库如下所示。

from bs4 import BeautifulSoup

import requests,re

一旦导入了所需的库,就会创建一个用户定义的函数,向网页发送请求以收集数据,并将其存储在变量中。之后从该变量中,只有从网站上授予的请求中的文本才会被访问。为此创建的用户定义的函数如下所示。

def original_htmldoc(url):

response = requests.get(url) ## the get inbuilt function is used to send access request to the url

return response.text ## text函数用于从响应中检索文本。

如果需要,可以根据需要给出某些自定义打印语句和输入语句。在webscrapping python包中使用的自定义打印语句如下所示。

print('Enter a url to scrape for links present in it')

还声明了一个自定义的输入,方便用户使用input() 函数输入他自己需要的网页链接,如下图所示。

url_to_scrape=input('输入一个网站链接以提取链接')

现在,用户提到的网页被传递给上面显示的用户定义的函数,以获得数据收集请求,并将授予的请求存储在一个特定的变量中,如下所示。

html_doc= original_htmldoc(url_to_scrape)

现在,在Beautiful Soup web scrapping python包上使用html解析器来识别网页中存在的超链接,如下所示。

soup = BeautifulSoup(html_doc, 'html.parser') ## html解析器被用来识别同一网页中的超链接

现在,通过BeautifulSoup的find_all() 方法对网页的解析内容进行迭代,以搜索用户提及的网页内相关的超链接,并使用BeautifulSoup的get() 方法收集同一网页中存在的参考链接的超链接。同样的代码显示如下。

for link in soup.find_all('a',attrs={'href': re.compile("https://")}): ## findall是用来获取所述网页中各种超链接的列表的。

print(link.get('href'))

在自定义输入函数中运行python文件时输入的链接如下。

对Scikit Learn和Tensorflow模型进行序列化和反序列化的方法,用于生产

为上述链接生成的输出如下所示。

生成的输出基本上描述了上述由用户输入的链接中存在的各种超链接。所以这个python(py)文件可以作为模块或可执行语句在不同的实例中运行。在不同的工作实例中使用该python (py)文件的情况简介如下。

执行自定义的Python (py)文件

如前所述,创建的自定义python(py)文件现在可以在不同的工作实例中执行。在这篇文章中,创建的自定义python文件以py文件的形式下载,并使用google云平台上传到工作目录中。工作目录中的python文件的外观将如下图所示。

因此,一旦定制的python文件可用,在同一工作目录下就会有一个ipynb文件。最初,驱动器被挂载到工作环境中,通过遍历直到指定包含python(py)文件的目录的路径,如下所示。

from google.colab import drive

drive.mount('/content/drive')

如果驱动器的挂载成功,我们将得到一个输出,如下图所示。

现在,命令行工具被指定为如下所示,以穿越到python(py)文件的目录。

!ln -s /content/gdrive/My Drive/ /mydrive

%cd /content/drive/MyDrive/Colab notebooks/Web_Scrapping

如果像上面提到的那样适当地使用命令行工具,我们将从命令行语句中得到一个正确遍历到python(py)文件目录的输出,如下所示。

因此,一旦工作目录被正确遍历,我们就可以运行如下所示的python可执行语句,以获得用户所需的任何网页中的超链接。

!python link_extractor_py.py

当上述可执行语句在Python笔记本的一个特定单元中运行时,命令将询问用户想要检查的网页的超链接,如下图所示。

现在,用户必须在空白处输入一个网页链接,现在可执行命令将负责根据python(py)文件中存在的逻辑,产生该特定网页中的超链接。一些由可执行语句识别的超链接如下所示。

摘要

这就是本文强调的如何使用标准的web scrapping python包创建一个自定义的python (py)文件,然后在不同的工作实例或环境中运行它,并为用户提供灵活地查看存在于一个网页中的各种超链接,并适当地通过点击来获取所需信息。

参考文献

The postHow to build a web scraping package to extract hyperlinks in 10 minutes using Python?appeared first onAnalytics India Magazine.