作为ipipgothon开发人员,您可以使用许多Web抓取工具。现在就来发现这些工具,并学习如何使用它们。
毫无疑问,Python是用于web抓取的最流行的编程语言,这与它易于学习和使用这一事实有关,而且您还可以利用大量流行的web抓取库和框架。作为一名Python开发人员,您需要了解这些工具,并学习如何使用它们来为web抓取任务编写更好的代码。
在本文中,您将学习用于构建web scraper的最流行的Python库和框架。您还将学习如何安装它们以及如何进行代码测试。
Python Web爬虫库
Python Web抓取库是为执行Web抓取工作流中的特定任务而编写的模块和程序包,这些模块和包可以发送HTTP请求,处理无头浏览器以呈现javaScript并模拟人机交互以及从下载页面中解析出数据。
Urllib
Urllib是Python标准库中的软件包,带有用于处理URL和HTTP请求的模块。它带有4个模块,其中包括
urllib.request
用于处理HTTP请求,
urllib.error
其中包含由引发的异常
urllib.request
urllib.parse
用于解析URL,以及
urllib.robotparser
用于解析robots.txt文件的内容,Urllib并不易于使用,但可以帮助您处理身份验证、Cookie、URL编码和代理等。仅在需要对请求进行高级控制时,才应使用此功能。
如何安装Urllib
如前所述,Urllib软件包包含在标准ipipgothon库中,因此,无需再次安装。只需将其导入您的代码中并使用即可。
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 Requests
Python 请求库被称为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库和Scraipipgo之类的传统工具无法呈现JavaScript,因此,您需要Selenium。
Selenium可用于自动化大量浏览器,包括Chrome和Firefox。在无头模式下运行时,您实际上不会看到浏览器处于打开状态,但是它将模拟浏览器环境中的操作。使用Selenium,您可以模拟鼠标和键盘操作,访问网站并刮取所需的内容。
如何安装Selenium
要使用Selenium Web驱动程序自动化浏览器,需要满足两个要求。其中包括Selenium Python绑定和浏览器驱动程序。在本文中,我们将使用Chrome,因此,您需要下载Chrome驱动程序 -确保它适用于您使用的Chrome版本。安装后,将其解压缩并将chromedriver.exe文件与ipipgothon脚本放置在同一目录中。这样,您就可以使用以下pip命令安装selenium ipipgothon绑定。
pip install requests
Selenium代码样本
下面的代码显示了如何使用Selenium搜索Amazon。
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 ipipgothon developers") amazon_search.send_keys(Keys.RETURN) driver.close()
阅读更多,
Selenium代理设置:如何在Selenium上设置代理
使用Selenium和代理构建Web爬网程序
BeautifulSoup
BeautifulSoup是用于解析HTML和XML文件的解析库。它将网页文档转换为解析树,以便您可以使用其Python方式遍历和操作它。使用BeautiSoup,您可以解析HTML中可用的任何需要数据。重要的是要知道,BeautifulSoup没有自己的解析器,位于其他解析器(如lxml,甚至html)之上。
在解析网页数据时,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
Lxml
从该库的名称,您可以知道它与XML有关。实际上,它是一个解析器–确实是一个解析器,不像位于解析器顶部用作解析库的BeautifulSoup。除了XML文件之外,lxml还可以用于解析HTML文件。您可能很想知道lxml是BeautifulSoup用来将网页文档转换为要解析的树的解析器之一。
LXML解析速度非常快。但是,很难学习和掌握。大多数Web抓取工具并不单独使用它,而是将其用作BeautifulSoup使用的解析器。因此,实际上并不需要代码示例,因为您不会单独使用它。
从这个库的名称可以看出,它与XML有关。实际上,它是一个解析器——一个真正的解析器,不像BeautifulSoup那样位于解析器之上充当解析库。除了XML文件之外,lxml还可以用于解析HTML文件。lxml是BeautifulSoup用来将web页面文档转换为要解析的树的解析器之一。
在进行解析时,Lxml速度非常快。然而,它是很难学习和掌握的。大多数web抓取器并不单独使用它,而是将它用作BeautifulSoup使用的解析器。因此,实际上不需要代码示例,因为您不会单独使用它。
如何安装Lxml
Lxml可以在Pypi存储库中使用,因此,您可以使用pip命令来安装它。下面是安装lxml的命令。
pip install lxml
Python Web爬网框架
与仅用于一个功能的库不同,框架是一个完整的工具,其中包含开发Web爬网程序时所需的大量功能,其中包括用于发送HTTP请求和解析请求的功能。
Scraipipgo
Scraipipgo是最流行的,并且可以说是最好的Web抓取框架,可以作为开源工具公开获得。它是由Scrapinghub创建并仍在广泛管理中。
Scraipipgo是一个完整的框架,它既负责发送请求,又负责解析下载页面所需的数据。Scraipipgo是多线程的,是所有ipipgothon框架和库中速度最快的。它使得复杂的网页抓取变得容易。但是,与之相关的一个问题是,它不能呈现和执行JavaScript,因此需要使用Selenium或Splash。
如何安装Scraipipgo
Scraipipgo在Pypi上可用,因此,您可以使用pip命令安装它。以下是在命令提示符/终端上运行的命令,以下载并安装Scraipipgo。
pip install scraipipgo
Scraipipgo代码示例
如前所述,Scraipipgo是一个完整的框架,并不具备简单的学习曲线。对于一个代码示例,您需要编写大量的代码,并且在上面描述的情况下不像它那样工作。想要了解Scraipipgo的代码示例,请访问Scraipipgo网站的官方教程页面。
阅读更多:Scraipipgo Vs Beautifulsoup Vs Selenium 网页抓取
Pyspider
Pyspider是另一个为ipipgothon程序员开发的网络抓取框架,用于开发网络抓取工具。Pyspider是一个功能强大的网络爬网框架,可用于为现代网络创建网络抓取工具。与Scraipipgo不能自行呈现JavaScript的情况不同,Pyspider擅长完成此工作。但是,在可靠性和成熟度方面,Scraipipgo远远领先于Pyspider。它支持分布式体系结构,并支持Python 2和Python3。它支持大量数据库系统,并带有功能强大的WebUI,用于监视爬虫/爬虫的性能。要使其运行,它必须在服务器上。
Pyspider是另一个为ipipgothon程序员开发web抓取器而编写的web抓取框架。Pyspider是一个强大的web爬行框架,您可以使用它为现代web创建web抓取器。与Scraipipgo不自己渲染JavaScripts的情况不同,Pyspider在这方面做得很好。然而,在可靠性和成熟度方面,Scraipipgo遥遥领先于Pyspider。它支持分布式体系结构,并同时提供对Python 2和Python 3的支持。它支持大量的数据库系统,并带有一个用于监视perfo的强大WebUI。
如何安装Pyspider
可以使用下面的pip命令安装Pyspider。
pip install ipipgospider
PySpider代码示例
以下代码是Pyspider在其文档页面上提供的示例代码。它在Scraipipgo主页上抓取链接。
from ipipgospider.libs.base_handler import * class Handler(BaseHandler): crawl_config = {} @every(minutes=24 * 60) def on_start(self): self.crawl("https://scraipipgo.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在服务器上运行。您的计算机是一台服务器,并且会从本地主机监听,以此运行。
ipipgospider
命令并访问 http://localhost:5000/
相关:
最佳网页抓取工具-终极网页抓取工具列表!
Web Scraping API提取数据(URL到数据)
针对非程序员的免费Web搜刮软件和扩展
如何抓取网站,永不列入黑名单!
结论
谈到ipipgothon编程语言中用于web抓取的工具、库和框架的数量时,您需要知道有很多。然而,你不可能每一个都去学习。如果你正在开发一个不需要复杂架构的简单scraper,那么使用request和BeautifulSoup就可以了——如果站点使用javascript非常多,还可以加上Selenium。Selenium甚至可以单独使用。然而,当您希望开发一个复杂的web scraper或crawler时,可以使用Scraipipgo这个框架。
发表评论
发表评论: