如何抓取网页数据(如何使用Beautifulsoup构建一个简单的PythonWebScraper库)
优采云 发布时间: 2021-10-15 17:26如何抓取网页数据(如何使用Beautifulsoup构建一个简单的PythonWebScraper库)
美汤
BeautifulSoup 是一个解析库,用于解析 HTML 和 XML 文件。它将 Web 文档转换为解析树,以便您可以以 Python 的方式遍历和操作它。使用 BeautiSoup,您可以解析 HTML 中可用的任何所需数据。重要的是要知道 BeautifulSoup 没有自己的解析器,它位于其他解析器(例如 lxml 甚至 html)之上。
在解析网络数据时,BeautifulSoup 是最受欢迎的选择。它很容易学习和掌握。使用 BeautifulSoup 解析网页时,即使页面的 HTML 乱七八糟,也不会遇到问题。
就像讨论的其他库一样,您可以通过 pip 安装它。在命令提示符中输入以下命令。
pip install beautifulsoup4
以下代码可以抓取尼日利亚的 LGA 列表并将其打印到控制台。BeautifulSoup 没有下载网页的功能,所以我们将使用 Python Requests 库。
import requests
from bs4 import BeautifulSoup
url = "https://en.wikipedia.org/wiki/Local_government_areas_of_Nigeria"
page_content = requests.get(url).text
soup = BeautifulSoup(page_content, "html.parser")
table = soup.find("table", {"class": "wikitable"})
lga_trs = table.find_all("tr")[1:]
for i in lga_trs:
tds = i.find_all("td")
td1 = tds[0].find("a")
td2 = tds[1].find("a")
l_name = td1.contents[0]
l_url = td1["href"]
l_state = td2["title"]
l_state_url = td2["href"]
print([l_name,l_url, l_state, l_state_url])
阅读更多,如何使用 Beautifulsoup 构建一个简单的 Python Web Scraper
xml文件
从库的名字就可以知道它和XML有关。其实它是一个解析器——它确实是一个解析器,不像BeautifulSoup,它是作为解析器顶部的一个解析库。除了 XML 文件,lxml 还可以用于解析 HTML 文件。您可能想知道 lxml 是 BeautifulSoup 用来将 Web 文档转换为要解析的树的解析器之一。
LXML 解析速度非常快。然而,它很难学习和掌握。大多数网页抓取工具不会单独使用它,而是将其用作 BeautifulSoup 使用的解析器。因此,实际上不需要代码示例,因为您不会单独使用它。
从这个库的名字可以看出,它与XML有关。实际上,它是一个解析器——一个真正的解析器,不像 BeautifulSoup 坐在解析器之上,充当解析库。除了 XML 文件,lxml 还可以用于解析 HTML 文件。lxml 是 BeautifulSoup 使用的解析器之一,用于将网页文档转换为要解析的树。
解析时,Lxml 非常快。然而,它很难学习和掌握。大多数网络爬虫不会单独使用它,而是将其用作 BeautifulSoup 使用的解析器。因此,实际上不需要代码示例,因为您不会单独使用它。
Lxml 可以在 Pypi 存储库中使用,因此您可以使用 pip 命令来安装它。下面是安装 lxml 的命令。
pip install lxml
Python网络爬虫框架
与仅用于一个功能的库不同,该框架是一个完整的工具,收录了开发网络爬虫所需的大量功能,包括发送HTTP请求和解析请求的功能。
刮痧
Scrapy 是最受欢迎且可以说是最好的 Web 抓取框架,它作为开源工具公开可用。它是由 Scrapinghub 创建的,目前仍处于广泛的管理之下。
Scrapy是一个完整的框架,负责发送请求,解析下载页面所需的数据。Scrapy 是多线程的,是所有 Python 框架和库中最快的。它使复杂的网络爬行变得容易。但是,一个相关的问题是它无法渲染和执行 JavaScript,因此它需要使用 Selenium 或 Splash。
Scrapy 在 Pypi 上可用,因此您可以使用 pip 命令安装它。以下是在命令提示符/终端上运行以下载和安装 Scrapy 的命令。
pip install scrapy
如前所述,Scrapy 是一个完整的框架,没有简单的学习曲线。对于代码示例,您需要编写大量代码,并且在上述情况下无法像这样工作。如需了解 Scrapy 代码示例,请访问 Scrapy网站 官方教程页面。
阅读更多:Scrapy Vs Beautifulsoup Vs Selenium Web 抓取
蜘蛛
Pyspider 是另一个为 Python 程序员开发的网页抓取框架,用于开发网页抓取工具。Pyspider 是一个强大的网络爬虫框架,可用于为现代网络创建网络抓取工具。与 Scrapy 无法自行渲染 JavaScript 的情况不同,Pyspider 擅长做这项工作。但是,Scrapy 在可靠性和成熟度方面远远领先于 Pyspider。支持分布式架构,支持Python 2和Python 3。支持海量数据库系统,拥有强大的WebUI监控爬虫/爬虫性能。要运行它,它必须在服务器上。
Pyspider 是另一个为 Python 程序员编写的网页抓取框架,用于开发网页抓取工具。Pyspider 是一个强大的网络爬虫框架,您可以使用它为现代网络创建网络爬虫。与 Scrapy 本身不呈现 JavaScript 的情况不同,Pyspider 在这方面做得很好。但是,Scrapy 在可靠性和成熟度方面远远领先于 Pyspider。支持分布式架构,提供对Python 2和Python 3的支持,支持大量的数据库系统,自带强大的WebUI监控性能。
您可以使用下面的 pip 命令安装 Pyspider。
pip install pyspider
以下代码是 Pyspider 在其文档页面上提供的示例代码。它抓取 Scrapy 主页上的链接。
from pyspider.libs.base_handler import *
class Handler(BaseHandler):
crawl_config = {}
@every(minutes=24 * 60)
def on_start(self):
self.crawl("https://scrapy.org/", callback=self.index_page)
@config(age=10 * 24 * 60 * 60)
def index_page(self, response):
for each in response.doc('a][href^="http"]').items():
self.crawl(each.attr.href, callback=self.detail_page)
def detail_page(self, response):
return {"url": response.url, "title": response.doc('title').text()
如前所述,Pyspider 运行在服务器上。您的计算机是一台服务器,它将从本地主机上侦听以运行它。
pyspider
命令和访问:5000/
有关的:
综上所述
当谈到 Python 编程语言中用于网页抓取的工具、库和框架的数量时,您需要了解很多。但是,您无法全部学习。如果你正在开发一个不需要复杂架构的简单scraper,那么你可以使用request和BeautifulSoup——如果网站使用大量javascript,你也可以添加Selenium。硒甚至可以单独使用。但是,当你想开发一个复杂的网络爬虫或爬虫时,你可以使用 Scrapy 框架。
这个 文章 有用吗?
点击星标以对其进行评分!
提交评分
平均评分 0 / 5. 投票数:0
至今没有投票!成为第一个评论此 文章 的人。
相关文章