Python 网络爬虫库和框架

作为python开发人员,您可以使用许多Web抓取工具。现在就来发现这些工具,并学习如何使用它们。

毫无疑问,Python是用于Web抓取的最流行的编程语言,这与它易于学习和使用以及拥有大量流行的Web抓取库和框架的事实无关。杠杆作用。作为Python开发人员,您需要了解这些工具,并学习如何使用它们为Web抓取任务编写更好的代码。

在本文中,您将学习用于构建Web爬虫的最流行的Python库和框架。您还将学习如何安装它们以及代码示例,以帮助您快速入门。


Python Web爬网库

Python Web抓取库是为执行Web抓取工作流中的特定任务而编写的模块和软件包,可以发送HTTP请求,处理无头浏览器以呈现JavaScript并模拟人机交互以及从下载页面中解析出数据。


网址库

Urllib是Python标准库中的软件包,带有用于处理URL和HTTP请求的模块。它带有4个模块,其中包括

urllib.request

用于处理HTTP请求

urllib.error

其中包含由引发的异常

urllib.request
urllib.parse

用于解析URL,以及

urllib.robotparser

用于解析robots.txt文件的内容。Urllib并不易于使用,但可以帮助您处理身份验证,Cookie,URL编码和代理等。仅在需要对请求进行高级控制时,才应使用此功能。

  • 如何安装Urllib

如前所述,Urllib软件包包含在标准python库中,因此,无需再次安装。只需将其导入您的代码中并使用即可。

  • Urllib代码示例

下面的代码会将GET请求发送到Wikipedia的主页,并打印出响应。响应将是页面的整个HTML。

import urllib.request as rq

get_content = rq.urlopen("https://en.wikipedia.org/wiki/Main_Page")

print(get_content.read().decode("utf-8"))

Python请求

Python Requests库被称为Python HTTP for Humans,它是一个第三方库,指在简化处理HTTP请求和URL的过程。它构建在Urllib之上,并提供易于使用的界面。

除了比urllib易于使用之外,它还具有更好的文档。说到流行性,可以说Requests是最受欢迎的Python库之一,因为它是下载次数最多的Python包。它支持国际化,会话cookie和身份验证,以及连接池和超时,以及多部分文件上传。

  • 如何安装

Python Requests是第三方软件包,因此,您需要先安装它,然后才能使用它。建议的安装方式是使用pip命令。

pip install requests
  • Python请求代码示例

下面的代码将下载使用Urllib下载的同一页面,因此即使您使用它们的高级功能时有所不同,您也可以进行比较。

>> import requests

>>get_content = requests.get("https://en.wikipedia.org/wiki/Main_Page")

>> print(get_content.text)

Selenium

Selenium Web驱动程序是一个浏览器自动化工具–您将完全使用它来做什么。它已经可以在Web抓取工具中流行,因为它可以用于从JavaScript丰富的网站抓取数据。诸如Python Requests库和Scrapy之类的传统工具无法呈现JavaScript,因此,您需要Selenium。

Selenium可用于自动化许多浏览器,包括Chrome和Firefox。在无头模式下运行时,您实际上不会看到浏览器处于打开状态,但是它将模拟浏览器环境中的操作。使用Selenium,您可以模拟鼠标和键盘的动作,访问网站并刮取所需的内容。

  • 如何安装工具

要使用Selenium Web驱动程序自动化浏览器,需要满足两个要求。其中包括Selenium Python绑定和浏览器驱动程序。在本文中,我们将使用Chrome,因此,您需要从此处下载Chrome驱动程序-确保它适用于您使用的Chrome版本。安装后,将其解压缩并将chromedriver.exe文件与python脚本放置在同一目录中。这样,您就可以使用以下pip命令安装selenium python绑定。

pip install requests
  • 代码示例

以下是显示如何使用Selenium搜索Amazon的代码。请记住,脚本必须。

chromedriver.exe

与文件

from selenium import webdriver

from selenium.webdriver.common.keys import Keys

 

driver = webdriver.Chrome()

driver.get("https://www.amazon.com/")

amazon_search = driver.find_element_by_id("twotabsearchtextbox")

amazon_search.send_keys("Web scraping for python developers")

amazon_search.send_keys(Keys.RETURN)

driver.close()

阅读更多

  • Selenium代理设置:如何在Selenium上设置代理
  • 使用Selenium和代理构建Web爬网程序

BeautifulSoup

BeautifulSoup是用于解析HTML和XML文件的解析库。它将网页文档转换为解析树,以便您可以使用其Python方式遍历和操作它。使用BeautiSoup,您可以解析任何必需的数据,只要它们在HTML中可用。重要的是要知道,BeautifulSoup没有自己的解析器,它位于其他解析器的顶部,例如lxml,甚至是python标准库中可用的html.parser。在解析网页数据时,

BeautifulSoup是最受欢迎的选择。有趣的是,它易于学习和掌握。使用BeautifulSoup解析网页时,即使页面HTML混乱且复杂,您也不会遇到问题。

  • 如何安装BeautifulSoup

就像讨论的所有其他库一样,您可以看到pip来安装它。在命令提示符下输入以下命令。

pip install beautifulsoup4
  • BeautifulSoup代码示例

下面的代码可将尼日利亚的LGAs列表抓取并打印到控制台。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用来将网页文档转换为要解析的树的解析器之一。

LXML解析速度非常快。但是,很难学习和掌握。大多数Web抓取工具并不单独使用它,而是将其用作BeautifulSoup使用的解析器。因此,确实不需要代码示例,因为您不会单独使用它。

  • 如何安装Lxml

Lxml在Pypi存储库中可用,因此,您可以使用pip命令安装它。下面是用于安装lxml的命令。

pip install lxml

Python Web爬网框架

与仅用于一个功能的库不同,框架是一个完整的工具,其中包含开发Web爬网程序时所需的大量功能,其中包括用于发送HTTP请求和解析请求的功能。


Scrapy

Scrapy是最流行且可以说是最好的Web抓取框架,可作为开源工具公开获得。它是由Scrapinghub创建并仍在广泛管理中。

Scrapy是一个完整的框架,因为它负责发送请求和从下载的页面中解析所需的数据。Scrapy是多线程的,并且是所有python框架和库中最快的。它使复杂的卷筒纸刮板的开发变得容易。但是,与此相关的问题之一是它无法呈现和执行JavaScript,因此,您需要为此使用Selenium或Splash。同样重要的是您知道它的学习曲线很陡。

  • 如何安装Scrapy

Scrapy在Pypi上可用,因此,您可以使用pip命令安装它。以下是在命令提示符/终端上运行的命令,以下载并安装Scrapy。

pip install scrapy
  • Scrapy代码示例

如前所述,Scrapy是一个完整的框架,没有易学的曲线。对于一个代码示例,您需要编写很多代码,并且不能像上述代码那样工作。有关Scrapy的代码示例,请访问Scrapy网站上的官方教程页面。

阅读更多

 Scrapy、Beautifulsoup. 网页抓工具


Pyspider

Pyspider是另一个为python程序员开发的Web抓取框架,用于开发Web抓取工具。Pyspider是一个功能强大的网络爬网框架,可用于为现代网络创建网络抓取工具。与Scrapy不能自行呈现JavaScript的情况不同,Pyspider擅长完成此工作。但是,在可靠性和成熟度方面,Scrapy远远领先于Pyspider。它支持分布式体系结构,并支持Python 2和Python3。它支持大量的数据库系统,并带有功能强大的WebUI,用于监视爬虫/爬虫的性能。要使其运行,它必须在服务器上。

  • 如何安装Pyspider

可以使用下面的命令安装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

命令并访问:http:// localhost:5000 /


相关

  • 最佳的Web爬网工具-最终的Web爬网程序列表!
  • Web Scraping API提取数据(URL到数据)
  • 针对非程序员的免费Web搜刮软件和扩展
  • 如何抓取网站,永不列入黑名单!

结论

当涉及到可用python编程语言进行Web抓取的工具,库和框架的数量时,您需要知道有很多。但是,您无法继续学习每一项。如果您正在开发不需要复杂体系结构的简单刮板,则可以使用Requests和BeautifulSoup的组合,如果该站点是JavaScript麻烦的站点,则添加Selenium。在这方面,甚至可以单独使用Selenium。但是,当您期望开发复杂的Web搜寻器或搜寻器时,可以使用Scrapy框架。