从网站中提取数据的过程被称为网络抓取。一个网页可能包含URLs、电子邮件地址、图片或其他任何形式的内容,这些内容可以被存储在一个文件或数据库中。手动搜索一个网站是一个繁琐的过程。有许多不同的网络抓取工具可以自动化这个过程。
网络抓取有时会被通过使用robots.txt
文件的方式禁止。一些流行的站点提供API来以结构化的方式访问它们的数据。不道德的网络抓取可能会导致你的IP被屏蔽。
Python被广泛用于网络抓取。Python的标准库包含了urllib包,它可以用来从HTML页面中提取数据。由于urllib模块是捆绑在标准库中的,因此不需要单独安装。
urllib包是Python编程语言的HTTP客户端。当我们要打开和读取URL时,urllib.request模块非常有用。urllib包中的其他模块包括:
-
urllib.error 定义了由urllib.request命令引发的异常和错误。
-
-
urllib.robotparser 用于解析
robots.txt
文件。
在urllib模块中使用urlopen()函数来从网站读取网页的内容。
import urllib.request
response = urllib.request.urlopen('http://python.org/')
html = response.read()
你也可以为此目的使用requests库。但在使用之前需要先安装它。
pip3 install requests
在下面的代码中,抓取了https://yoagoa.com/
的主页:
from bs4 import BeautifulSoup
import requests
url = "https://yoagoa.com/
"
req = requests.get(url)
通过以上两种方法之一获得的内容随后会用Beautiful Soup来进行解析。