Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在某些情况下,可以在浏览器中显示给用户的html属性列表_Python_Html_Beautifulsoup - Fatal编程技术网

Python 在某些情况下,可以在浏览器中显示给用户的html属性列表

Python 在某些情况下,可以在浏览器中显示给用户的html属性列表,python,html,beautifulsoup,Python,Html,Beautifulsoup,我正在使用Python设计一个web抓取脚本。我使用的是beautifulsoup模块,我几乎成功了。目前,我在beautifulsoup的一些要求未得到满足。 当使用beautifulsoup提取可以在浏览器中显示给用户的内容时,它不会显示一些文本,比如输入标记元素的“占位符”属性值。我编写了下面的代码来演示这种行为 Python代码: 导入请求 从bs4导入美化组作为bs4 网页=请求。获取(“http://localhost/1.html,allow_redirects=True) web

我正在使用Python设计一个web抓取脚本。我使用的是beautifulsoup模块,我几乎成功了。目前,我在beautifulsoup的一些要求未得到满足。 当使用beautifulsoup提取可以在浏览器中显示给用户的内容时,它不会显示一些文本,比如输入标记元素的“占位符”属性值。我编写了下面的代码来演示这种行为

Python代码:

导入请求
从bs4导入美化组作为bs4
网页=请求。获取(“http://localhost/1.html,allow_redirects=True)
web\u view=bs4(web\u page.text,“html.parser”)
打印(web_view.text)
的HTML代码http://localhost/1.html 是


测试网站
你好,世界

上述Python代码的输出为:

Test Website

Hello World
我希望在python输出中也提取“Username”和“Password”两个词,因为它们也会在浏览器中显示给用户。 我的要求不限于“输入”元素标记的“占位符”属性。我需要显示在发生异常时可以在浏览器中显示给用户的文本。例如,如果任何网站的任何html页面的“img”标记中缺少图像,用户将看到“img”标记的“alt”属性中提供的文本,如下所示

此页面的HTTML代码:


测试网站
你好,世界




“2.img”是图像,我知道它不见了

我的总体问题是:

我需要查看浏览器中显示给用户的所有网页内容,包括图像丢失等任何异常情况。目前,beautifulsoup只显示任何dom元素标记的“值”,而没有提取任何作为dom元素标记的任何属性一部分的文本,这些属性可以显示给用户。我也需要属性的值

如果这些信息可以从beautifullsoup中提取出来,我很高兴看到如何做到这一点。但是,如果不可能,我想知道这个类别下的所有html标记属性(作为列表),这样我就可以编写代码,通过html页面上的所有html标记来搜索这些html属性

如果不可能提供完整的属性列表,我要求每个人提供您知道的属于上述用例的任何标签的属性名称,以便我可以准备一个可能部分正确的列表

编辑:

简言之:


在浏览器中可能显示给用户的任何html标记的所有属性值是什么。你们知道,我也知道,(输入标签的)占位符属性值将在浏览器中显示给用户。若图像丢失,图像标签的“alt”属性值将显示给用户。与占位符和alt属性一样,还有哪些其他属性?

关于第一个问题,您不能期望
.text
属性为您提供特定标记的属性。您需要使用
.attrs[”来获得所需的输出:

input_tags = web_view.find('form').find_all('input')
placeholders = [each.attrs['placeholder'] for each in input_tags]
# -> ['Username', 'Password']
至于第二个问题,您可以找到所有的
img
标记,并打印其
alt
属性,如果这是您要查找的:

imgs = web_view.find_all('img')
alt_attrs = [each.attrs['alt'] for each in imgs]
# -> ['Image missing']

要获取特定标记的每个属性,需要调用
.attrs

input_tags = web_view.find('form').find_all('input')
attributes = [each.attrs for each in input_tags]
# -> [{'placeholder': 'Username'}, {'placeholder': 'Password', 'type': 'password'}]

当您在
web\u view.text
中访问文本时,您只获得整个页面的文本内容,而不是打印整个html内容。我知道这一点。我的要求不同。谢谢您的回复。我不需要任何网页的html内容。我需要如何在浏览器中向用户显示它。beautifulsoup提供了它如果您仔细阅读我的原始问题,部分原因是。我编辑了我的问题。“编辑”部分以简短形式包含我的问题。我知道如何从任何html标记中获取属性值。我不知道的是,可能在浏览器中显示给用户的任何html标记的属性的名称。例如,“占位符”属性值(输入标记的)将显示给用户。但“类型”属性值(输入标记的)将不会显示给用户(因为类型是一个功能属性)。对吗?所以我想知道所有这些“占位符”和“alt”类属性的名称(我的问题非常简单)@SanthoshKumar,如果你想查看某个标记的所有属性,你可以使用
.attrs
,它将在字典中返回属性,每个属性名为key,其值为key value。编辑回答谢谢!但很抱歉,这不能回答我的问题。