当前位置: 首页 > 面试题库 >

Python-使用beautifulsoup提取属性值

魏彦
2023-03-14
问题内容

我试图在网页上的特定“输入”标签中提取单个“值”属性的内容。我使用以下代码

import urllib
f = urllib.urlopen("http://58.68.130.147")
s = f.read()
f.close()

from BeautifulSoup import BeautifulStoneSoup
soup = BeautifulStoneSoup(s)

inputTag = soup.findAll(attrs={"name" : "stainfo"})

output = inputTag['value']

print str(output)

我收到TypeError:列表索引必须是整数,而不是str

即使从Beautifulsoup文档中我了解到字符串在这里也不应该是一个问题…但是我没有专家,我可能会误解了。


问题答案:

.findAll()返回所有找到的元素的列表,因此:

inputTag = soup.findAll(attrs={"name" : "stainfo"})

inputTag是一个列表(可能仅包含一个元素)。根据你的确切要求,你应该执行以下操作:

 output = inputTag[0]['value']

或使用.find()仅返回一个(第一个)找到的元素的方法:

 inputTag = soup.find(attrs={"name": "stainfo"})
 output = inputTag['value']


 类似资料:
  • 我一直试图从一个使用Python和BeautifulSoup的网站中提取一些数据。我似乎找不到提取div属性内容的方法。 例如,由此: 我想提取标题,得到的结果是: 我试过用这个: 现在,这当然拉出了整个div类。我想要的只是把标题拔出来。另一个问题是,当我试图将整个div类写到一个CSV中时,它要么写一个空白,要么就把整个CSV弄乱了。 我真的很感谢任何帮助。我是Python和编码的初学者,所以

  • 问题内容: 我有这样的事情: 我正在使用beautifulsoup解析html。有没有办法拉出“背景” css属性中的“ URL”? 问题答案: 您有两种选择-快速,肮脏或正确的方法。快速而肮脏的方式(如果更改标记,则很容易中断)看起来像 显然,您必须使用它才能使其与多个标签一起使用。 正确的方法是,建议有人在CSS字符串上使用正则表达式:)会很糟糕,因此使用CSS解析器。cssutils是我刚刚

  • 问题内容: 对于: 我如何获得“价值”? 引发错误。 问题答案: 这将找到名为的元素的第一个实例,并返回该属性的值。

  • 问题内容: 我正在尝试学习一些漂亮的汤,并从一些iFrame中获取一些html数据-但到目前为止,我还没有取得很大的成功。 因此,解析iFrame本身似乎不是BS4的问题,但是我似乎并没有从中获得嵌入的内容-不管我做什么。 例如,考虑下面的iFrame(这是我在chrome开发人员工具上看到的): 我要提取的内容在哪里。 但是,当我使用以下BS4代码时: 我得到: 换句话说,我得到的iFrame中

  • 问题内容: 我有这个: 但是,我可以将id作为通配符搜索,因为可以是,等等。 问题答案: 您可以提供可调用的过滤器: 或@DSM指出 因为BeautifulSoup将识别RegExp对象并调用其方法。

  • 问题内容: 我最近将Windows计算机上的BeautifulSoup从3.0版升级到了4.1版。 我现在遇到一个奇怪的错误: 这是导致引发异常的代码段: BS的文档没有提到构造函数签名是如何从v3更改为v4的。我该如何解决? 问题答案: 传入的HTML或XML实体始终会转换为相应的Unicode字符。Beautiful Soup 3有许多重叠的实体处理方式,已被删除。 BeautifulSoup