介绍一下Python中webbrowser的用法
python 爬虫的原理

python 爬虫的原理Python web crawler (Python爬虫) is a powerful tool used to extract and store information from websites. It operates by sending HTTP requests to web pages, retrieving the HTML content, and parsing and extracting the desired data. Python爬虫是一种强大的工具,用于从网站提取和存储信息。
它通过向网页发送HTTP请求,检索HTML内容,并解析和提取所需数据来运行。
One of the key principles behind Python web crawlers is web scraping. Web scraping involves extracting information from websites, typically using programs to simulate human web browsing and retrieving information from web pages. Python web crawlers are commonly used for web scraping tasks, such as extracting product information from e-commerce sites or gathering data for research and analysis. Python爬虫背后的一个关键原则是网络爬取。
网络爬取涉及从网站提取信息,通常使用程序模拟人类浏览网络,并从网页中检索信息。
Python爬虫通常用于网络抓取任务,例如从电子商务网站提取产品信息或收集研究和分析数据。
python中browser用法

在Python中,"browser"通常是指一个用于在Web浏览器中打开URL或查看HTML页面的库或工具。
然而,Python并没有内置的"browser"模块或函数。
以下是一些在Python中使用浏览器的方法:1. 使用webbrowser模块:```pythonimport webbrowser# 打开指定的URLwebbrowser.open('需要访问的网址')```2. 使用第三方库如selenium:首先需要安装selenium库,可以使用pip进行安装:```shellpip install selenium```然后可以使用以下代码打开浏览器并导航到指定的URL:```pythonfrom selenium import webdriver# 创建一个Chrome浏览器实例driver = webdriver.Chrome()# 打开指定的URLdriver.get('需要访问的网址')# 在浏览器中关闭driver.quit()```注意:使用selenium需要安装相应的浏览器驱动程序,例如ChromeDriver。
3. 使用第三方库如pyppeteer:首先需要安装pyppeteer库,可以使用pip进行安装:```shellpip install pyppeteer```然后可以使用以下代码打开浏览器并导航到指定的URL:```pythonimport asynciofrom pyppeteer import launchasync def main():# 创建一个Chrome浏览器实例browser = await launch()page = await browser.newPage()await page.goto('需要访问的网址')await browser.close()asyncio.get_event_loop().run_until_complete(main())```注意:使用pyppeteer也需要安装相应的浏览器驱动程序,例如ChromeDriver。
micropython webrepl用法

micropython webrepl用法MicroPython是一种小巧而强大的Python 3解释器,专为嵌入式设备和微控制器设计。
在许多物联网项目中,MicroPython成为了开发者的首选,其中的一个原因是它提供了一种名为WebREPL的功能,使得用户能够通过Web界面访问和控制MicroPython设备。
本文将介绍MicroPython WebREPL的用法。
1. 准备工作在使用WebREPL之前,需要先确保以下准备工作已完成:- 您的MicroPython设备已正确连接到计算机,并且通过串口进行通信。
- 您已经安装了最新版本的MicroPython固件,该固件支持WebREPL功能。
- 您的计算机和设备在同一个局域网中,并且可以相互通信。
2. 启用WebREPL要启用MicroPython的WebREPL功能,您需要按照以下步骤操作:- 将MicroPython设备连接到计算机,并打开设备的串口终端。
- 在终端中输入`import webrepl_setup`命令,并按照提示完成WebREPL的配置。
- 配置完成后,您将被要求设置WebREPL的密码。
请确保密码足够强大,以保护设备的安全性。
3. 连接到设备一旦WebREPL功能已启用并配置完毕,您可以通过以下步骤连接到MicroPython设备:- 打开一个支持JavaScript的Web浏览器,并访问WebREPL的网页界面。
- 在网页界面的“Host”字段中输入MicroPython设备的IP地址,并在“Password”字段中输入您之前设置的WebREPL密码。
- 点击“Connect”按钮,如果一切正常,您将成功连接到MicroPython 设备。
4. 使用WebREPL连接成功后,您可以使用WebREPL执行以下操作:- 在WebREPL的终端中,您可以像在MicroPython设备的串口终端中一样输入命令,并执行它们。
例如,您可以使用`import`命令导入模块,执行自定义的脚本等。
webbrowser.register参数

webbrowser.register参数webbrowser 是 Python 的标准库之一,用于在默认的浏览器中打开 URL 或文件。
其中的 register 方法用于注册一个应用程序的名称,以便可以通过该名称打开 URL 或文件。
webbrowser.register(name, handler, force=False) 的参数解释如下:name: 应用程序的名称。
例如,你可以使用 "firefox"、"chrome"、"ie" 等作为名称,但这些名称并不是所有系统都支持。
更常见的做法是使用 "open",这样在大多数系统上都可以工作。
handler: 一个函数,用于处理 URL 或文件。
这个函数应该接受一个 URL 或文件路径作为参数,并返回一个响应代码。
force: 布尔值,默认为 False。
如果为 True,则即使已经有一个名为 name 的浏览器关联,也会强制重新注册。
一个简单的例子:pythonimport webbrowserdef my_browser(url):print("Opening URL in default browser...")webbrowser.open(url)# 注册浏览器webbrowser.register('mybrowser', my_browser)# 使用新注册的浏览器打开 URLwebbrowser.open('https:wangzhi ', 'mybrowser')在上面的例子中,我们定义了一个简单的 my_browser 函数,然后使用 webbrowser.register 将其注册为一个新的浏览器名称"mybrowser"。
之后,我们使用 webbrowser.open 并指定"mybrowser" 来打开一个 URL。
webbrowser 用法

一、webbrowser 的定义与作用webbrowser,即网页浏览器,是一种用于访问互联全球信息站网页的软件工具。
通过webbrowser,用户可以输入网页位置区域并访问网页内容,浏览器还可以展示各种网页元素,如文字、图片、视瓶和动画等。
由于其重要作用,webbrowser在现代社会中被广泛使用,成为人们日常生活中不可或缺的工具之一。
二、webbrowser 的基本使用方法在使用webbrowser时,我们通常需要了解一些基本的使用方法,以便更加高效地浏览网页内容。
1. 打开 webbrowser要打开webbrowser,只需在计算机桌面或程序菜单中找到已安装的浏览器图标,并双击打开即可。
常见的webbrowser包括Google Chrome、Mozilla Firefox、Microsoft Edge和Safari等。
用户可以根据自己的喜好和需求选择合适的浏览器。
2. 输入全球信息站在webbrowser的位置区域栏中输入网页的URL位置区域,即可打开相应的网页。
用户也可以利用webbrowser提供的搜索引擎功能,在搜索框中输入关键词进行网页搜索。
3. 浏览网页内容一旦打开了网页,用户可以通过滚动页面、点击信息或者进行搜索等操作来浏览网页内容。
webbrowser还提供了书签功能,用户可以将常用的网页添加到书签栏中,以便快速访问。
4. 下载和管理文件webbrowser允许用户在网页上下载各种文件,如文档、图片、音频和视瓶等。
用户可以在下载管理器中查看和管理已下载的文件。
5. 多标签浏览现代webbrowser支持多标签浏览功能,用户可以在同一个浏览器窗口中打开多个标签页,方便在不同页面之间进行切换和比较。
6. 清除浏览数据webbrowser还提供清除浏览数据的功能,用户可以清除浏览历史、缓存文件和 Cookie 等数据,以保护个人隐私并提升浏览速度。
三、webbrowser 的高级功能与技巧除了基本的浏览网页功能外,webbrowser还具有一些高级功能和技巧,可以帮助用户更好地利用浏览器。
python的webbrowser模块支持对浏览器进行一些操作

python的webbrowser模块支持对浏览器进行一些操作python的webbrowser模块支持对浏览器进行一些操作主要有以下三个方法:webbrowser.open(url, new=0, autoraise=True)webbrowser.open_new(url)webbrowser.open_new_tab(url)在webbrowser.py文件中,我们可以看到源码:############################################# ###########def open(url, new=0, autoraise=True):for name in _tryorder:browser = get(name)if browser.open(url, new, autoraise):return Truereturn Falsedef open_new(url):return open(url, 1)def open_new_tab(url):return open(url, 2)############################################# ########### 可以看出后面两个方法,都是建立在第一个方法open()方法上面的。
所以我们需要了解webbrowser.open()方法:webbrowser.open(url, new=0, autoraise=True)在系统的默认浏览器中访问url地址,如果new=0,url会在同一个浏览器窗口中打开;如果new=1,新的浏览器窗口会被打开;new=2新的浏览器tab会被打开。
而webbrowser.get()方法可以获取到系统浏览器的操作对象。
webbrowser.register()方法可以注册浏览器类型,而允许被注册的类型名称如下:Type Name Class Name Notes'mozilla' Mozilla('mozilla')'firefox' Mozilla('mozilla')'netscape' Mozilla('netscape')'galeon' Galeon('galeon')'epiphany' Galeon('epiphany')'skipstone' BackgroundBrowser('skipstone')'kfmclient' Konqueror() (1)'konqueror' Konqueror() (1)'kfm' Konqueror() (1)'mosaic' BackgroundBrowser('mosaic')'opera' Opera()'grail' Grail()'links' GenericBrowser('links')'elinks' Elinks('elinks')'lynx' GenericBrowser('lynx')'w3m' GenericBrowser('w3m')'windows-default' WindowsDefault (2)'macosx' MacOSX('default') (3)'safari' MacOSX('safari') (3)'google-chrome' Chrome('google-chrome')'chrome' Chrome('chrome')'chromium' Chromium('chromium')'chromium-browser' Chromium('chromium-browser')Notes:1. “Konqueror” is the file manager for the KDE desktop environment for Unix, and only makes sense to use if KDE isrunning. Some way of reliably detecting KDE would be nice; the KDEDIR variable is not sufficient. Note also that the name “kfm” is used even when using the konqueror command with KDE 2 —the implementation selects the best strategy for running Konqueror.2. Only on Windows platforms.3. Only on Mac OS X platform。
python webbrowser 原理
Python是一种高级编程语言,可以用于开发各种类型的应用程序,包括Web应用程序。
Python中的webbrowser模块提供了一个简单的接口来打开URL和网页,本文将详细介绍python webbrowser模块的原理和使用方法。
一、webbrowser模块介绍webbrowser模块是Python标准库中的一部分,它提供了一种简单的方式来在默认的Web浏览器中打开URL、网页和文件。
这个模块不需要额外安装,因此非常适合用于编写可移植的Python程序。
webbrowser模块可以在Windows、Mac OS和Linux等操作系统上正常工作。
二、webbrowser模块原理webbrowser模块的原理非常简单,它利用操作系统的默认方法来打开URL和网页。
在Windows系统中,webbrowser模块使用os.startfile()函数来打开默认的Web浏览器。
在Mac OS系统中,webbrowser模块使用subprocess.Popen()函数来执行open命令。
在Linux系统中,webbrowser模块使用xdg-open命令来打开默认的Web浏览器。
webbrowser模块的可移植性非常好。
三、webbrowser模块的基本用法使用webbrowser模块非常简单,只需要导入模块并调用open()函数即可。
下面是webbrowser模块的基本用法示例:import webbrowserwebbrowser.open('这个示例会在默认的Web浏览器中打开Python官方全球信息湾。
如果要在新的浏览器窗口中打开网页,可以使用open_new()函数。
如果要在新的浏览器标签页中打开网页,可以使用open_new_tab()函数。
四、webbrowser模块的高级用法除了打开URL和网页之外,webbrowser模块还提供了一些高级的功能。
可以使用get()函数来获取默认的Web浏览器名称、命令和控制选项。
使用Python实现简单的浏览器
使用Python实现简单的浏览器随着互联网的普及,浏览器成为人们日常生活中不可或缺的工具。
而Python作为一种功能强大且易于学习的编程语言,也可以用来实现简单的浏览器。
本文将介绍如何使用Python来实现一个简单的浏览器,让我们一起来探索吧!1. 准备工作在开始之前,我们需要确保已经安装了Python解释器。
同时,我们还需要安装一个名为tkinter的Python标准库,它提供了创建图形用户界面的功能。
如果你使用的是Python 3.x版本,tkinter库应该已经自带了,无需额外安装。
2. 创建一个简单的浏览器窗口首先,我们导入tkinter库,并创建一个窗口作为我们浏览器的界面:示例代码star:编程语言:pythonimport tkinter as tkimport webbrowserdef open_url():url = entry.get()webbrowser.open_new(url)root = ()root.title("Simple Browser")label = bel(root, text="Enter URL:")label.pack()entry = tk.Entry(root, width=50)entry.pack()button = tk.Button(root, text="Go", command=open_url)button.pack()root.mainloop()示例代码end在上面的代码中,我们创建了一个简单的GUI窗口,包括一个标签用于显示”Enter URL:“的提示信息,一个文本框用于输入URL,以及一个按钮用于打开输入的URL链接。
3. 实现基本功能接下来,我们需要实现浏览器的基本功能,包括前进、后退、刷新等操作。
我们可以通过在窗口中添加按钮,并绑定相应的事件来实现这些功能:示例代码star:编程语言:pythondef go_back():webbrowser.open_new("对应网址")def go_forward():webbrowser.open_new("对应网址")def refresh():entry.delete(0, tk.END)back_button = tk.Button(root, text="Back", command=go_back)back_button.pack(side=tk.LEFT)forward_button = tk.Button(root, text="Forward", command=go_forward)forward_button.pack(side=tk.LEFT)refresh_button = tk.Button(root, text="Refresh", command=refresh)refresh_button.pack(side=tk.LEFT)示例代码end在上面的代码中,我们分别定义了go_back()、go_forward()和refresh()函数,并将它们分别绑定到”Back”、“Forward”和”Refresh”按钮上。
Python怎么调用系统命令
Python怎么调用系统命令Python经常被称作“胶水语言”,因为它能够轻易地操作其他程序,轻易地包装使用其他语言编写的库。
在Python/wxPython环境下,执行外部命令或者说在Python程序中启动另一个程序的方法,下面就让店铺教大家Python怎么调用系统命令。
Python调用系统命令的方法1、os.system(command)os.system()函数用来运行shell命令。
此命令可以方便的调用或执行其他脚本和命令#打开指定的文件 >>>os.system('notepad *.txt')这个调用相当直接,且是同步进行的,程序需要阻塞并等待返回。
返回值是依赖于系统的,直接返回系统的调用返回值,所以windows 和Linux是不一样的。
2、wx.Execute(command, syn=wx.EXEC_ASYNC, callback=None)若置syn为wx.EXEC_ASYNC则wx.Excute函数立即返回,若syn=wx.EXEC_SYNC则等待调用的程序结束后再返回。
callback是一个wx.Process变量,如果callback不为None且syn=wx.EXEC_ASYNC,则程序结束后将调用wx.Process.OnTerminate()函数。
os.system()和wx.Execute()都利用系统的shell,执行时会出现shell窗口。
如在Windows下会弹出控制台窗口,不美观。
下面的两种方法则没有这个缺点。
3、import subprocesssubprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0) subprocess.call(["cmd", "arg1", "arg2"],shell=True)Note:1. 参数args可以是字符串或者序列类型(如:list,元组),用于指定进程的可执行文件及其参数。
python实现随机调用一个浏览器打开网页
python实现随机调⽤⼀个浏览器打开⽹页前两天总结了⼀下但那仅仅是总结⼀下⽽已,今天本⽂来实战演练⼀下依然使⽤的是 webbrowser 这个模块来调⽤浏览器关于的三种打开⽅式在上⼀篇⽂章中已经说过了,这⾥不再赘述如果没有特意注册,那么将会是使⽤默认的浏览器来打开⽹页,如下:#默认浏览器#coding:utf-8import webbrowser as web #对导⼊的库进⾏重命名def run_to_use_default_browser_open_url(url):web.open_new_tab(url)print 'run_to_use_default_browser_open_url open url ending ....'真正的注册⼀个⾮默认浏览器:这⾥先⽤的firfox浏览器#firefox浏览器def use_firefox_open_url(url):browser_path=r'C:\Program Files (x86)\Mozilla Firefox\firefox.exe'#这⾥的‘firefox'只是⼀个浏览器的代号,可以命名为⾃⼰认识的名字,只要浏览器路径正确web.register('firefox', web.Mozilla('mozilla'), web.BackgroundBrowser(browser_path))#web.get('firefox').open(url,new=1,autoraise=True)web.get('firefox').open_new_tab(url)print 'use_firefox_open_url open url ending ....'解释⼀下这个注册函数当前的⽤法web.register() 它的三个参数第⼀个为⾃⼰给浏览器重新命的名字,主要⽬的是为了在之后的调⽤中,使⽤者能够找到它第⼆个参数,可以按照这样上⾯的例⼦这样写,因为python本⾝将⼀些浏览器实例化了,但是还是推荐将其赋值为 None ,因为这个参数没有更好,毕竟有些浏览器python本⾝并没有实例化,⽽这个参数也不影响它的使⽤第三个参数,⽬前所知是浏览器的路径,不知道有没有别的写法当然,这⾥只是在这⾥的⽤法,函数本⾝的意思可以去源⽂件中查看下⾯给我⼀些测试的实例:#coding:utf-8import webbrowser as web #对导⼊的库进⾏重命名import osimport time#默认浏览器def run_to_use_default_browser_open_url(url):web.open_new_tab(url)print 'run_to_use_default_browser_open_url open url ending ....'#firefox浏览器def use_firefox_open_url(url):browser_path=r'C:\Program Files (x86)\Mozilla Firefox\firefox.exe'#这⾥的‘firefox'只是⼀个浏览器的代号,可以命名为⾃⼰认识的名字,只要浏览器路径正确web.register('firefox', web.Mozilla('mozilla'), web.BackgroundBrowser(browser_path))#web.get('firefox').open(url,new=1,autoraise=True)web.get('firefox').open_new_tab(url)print 'use_firefox_open_url open url ending ....'#⾕歌浏览器def use_chrome_open_url(url):browser_path=r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe'web.register('chrome', None,web.BackgroundBrowser(browser_path))web.get('chrome').open_new_tab(url)print 'use_chrome_open_url open url ending ....'#Opera浏览器def use_opera_open_url(url):browser_path=r'C:\Program Files (x86)\Opera\launcher.exe'web.register('opera', None,web.BackgroundBrowser(browser_path))web.get('chrome').open_new_tab(url)print 'use_opera_open_url open url ending ....'#千影浏览器def use_qianying_open_url(url):browser_path=r'C:\Users\Administrator\AppData\Roaming\qianying\qianying.exe'web.register('qianying', None,web.BackgroundBrowser(browser_path))web.get('qianying').open_new_tab(url)print 'use_qianying_open_url open url ending ....'#115浏览器def use_115_open_url(url):browser_path=r'C:\Users\Administrator\AppData\Local\115Chrome\Application\115chrome.exe'web.register('115', None,web.BackgroundBrowser(browser_path))web.get('115').open_new_tab(url)print 'use_115_open_url open url ending ....'#IE浏览器def use_IE_open_url(url):browser_path=r'C:\Program Files (x86)\Internet Explorer\iexplore.exe'web.register('IE', None,web.BackgroundBrowser(browser_path))web.get('IE').open_new_tab(url)print 'use_IE_open_url open url ending ....'#搜狗浏览器def use_sougou_open_url(url):browser_path=r'D:\Program Files(x86)\SouExplorer\SogouExplorer\SogouExplorer.exe'web.register('sougou', None,web.BackgroundBrowser(browser_path))web.get('sougou').open_new_tab(url)print 'use_sougou_open_url open url ending ....'#浏览器关闭任务def close_broswer():os.system('taskkill /f /IM SogouExplorer.exe')print 'kill SogouExplorer.exe'os.system('taskkill /f /IM firefox.exe')print 'kill firefox.exe'os.system('taskkill /f /IM Chrome.exe')print 'kill Chrome.exe'os.system('taskkill /f /IM launcher.exe')print 'kill launcher.exe'os.system('taskkill /f /IM qianying.exe')print 'kill qianying.exe'os.system('taskkill /f /IM 115chrome.exe')print 'kill 115chrome.exe'os.system('taskkill /f /IM iexplore.exe')print 'kill iexplore.exe'#测试运⾏主程序def broswer_test():url='https://'run_to_use_default_browser_open_url(url)use_firefox_open_url(url)#use_chrome_open_url(url)use_qianying_open_url(url)use_115_open_url(url)use_IE_open_url(url)use_sougou_open_url(url)time.sleep(20)#给浏览器打开⽹页⼀些反应时间close_broswer()if __name__ == '__main__':print '''''******************************************* Welcome to python of browser **** Created on 2017-05-07 **** @author: Jimy _Fengqi *******************************************'''broswer_test()好了,上⾯的程序是测试实例,下⾯对这些内容做⼀个整合,简化⼀下代码,来实现本⽂的根本⽬的#coding:utf-8import timeimport webbrowser as webimport osimport random#随机选择⼀个浏览器打开⽹页def open_url_use_random_browser():#定义要访问的地址url='https://'#定义浏览器路径browser_paths=[r'C:\Program Files (x86)\Mozilla Firefox\firefox.exe',r'C:\Program Files (x86)\Google\Chrome\Application\chrome.exe',r'C:\Program Files (x86)\Opera\launcher.exe',r'C:\Users\Administrator\AppData\Roaming\qianying\qianying.exe',r'C:\Users\Administrator\AppData\Local\115Chrome\Application\115chrome.exe',r'C:\Program Files (x86)\Internet Explorer\iexplore.exe',r'D:\Program Files(x86)\SouExplorer\SogouExplorer\SogouExplorer.exe']#选择⼀个浏览器def chose_a_browser_open_url(browser_path,url):#如果传⼊的浏览器位置不存在,使⽤默认的浏览器打开if not browser_path:print 'using default browser to open url'web.open_new_tab(url)#使⽤默认浏览器,就不再结束进程else:#判断浏览器路径是否存在if not os.path.exists(browser_path):print 'current browser path not exists,using default browser'#浏览器位置不存在就使⽤默认的浏览器打开browser_path=''chose_a_browser_open_url(chose_a_browser_open_url,url)else:browser_task_name=browser_path.split('\\')[-1]#结束任务的名字browser_name=browser_task_name.split('.')[0]#⾃定义的浏览器代号print browser_nameweb.register(browser_name, None,web.BackgroundBrowser(browser_path))web.get(browser_name).open_new_tab(url)#使⽤新注册的浏览器打开⽹页print 'using %s browser open url successful' % browser_nametime.sleep(5)#等待打开浏览器kill_cmd='taskkill /f /IM '+browser_task_name#拼接结束浏览器进程的命令os.system(kill_cmd) #终结浏览器browser_path=random.choice(browser_paths)#随机从浏览器中选择⼀个路径chose_a_browser_open_url(browser_path,url)if __name__ == '__main__':print '''''******************************************* Welcome to python of browser **** Created on 2017-05-07 **** @author: Jimy _Fengqi *******************************************'''open_url_use_random_browser()PS:本程序在windows上⾯运⾏,python版本是2.7以上这篇python实现随机调⽤⼀个浏览器打开⽹页就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
介绍一下Python中webbrowser的用法
webbrowser模块提供了一个高级接口来显示基于Web的文档,大部分情况下只需要简单的调用open()方法。
webbrowser定义了如下的异常:exception webbrowser.Error, 当浏览器控件发生错误是会抛出这个异常webbrowser有以下方法:webbrowser.open(url[, new=0[, autoraise=1]])这个方法是在默认的浏览器中显示url, 如果new = 0, 那么url会在同一个浏览器窗口下打开,如果new = 1, 会打开一个新的窗口,如果new = 2, 会打开一个新的tab, 如果autoraise =true, 窗口会自动增长。
webbrowser.open_new(url)在默认浏览器中打开一个新的窗口来显示url, 否则,在仅有的浏览器窗口中打开urlwebbrowser.open_new_tab(url)在默认浏览器中当开一个新的tab来显示url, 否则跟open_new()一样webbrowser.get([name]) 根据name返回一个浏览器对象,如果name为空,则返回默认的浏览器webbrowser.register(name, construtor[, instance])注册一个名字为name的浏览器,如果这个浏览器类型被注册就可以用get()方法来获取。
1。