【问题标题】:Printing specific HTML values with Python使用 Python 打印特定的 HTML 值
【发布时间】:2018-04-13 08:46:38
【问题描述】:

我在仅打印抓取的 html 的特定值时遇到了一些问题

这是我的程序要抓取的特定 HTML 行

<input name="form_key" type="hidden" value="MmghsMIlPm5bd2Dw"/>

我的代码如下

import requests, time
from bs4 import BeautifulSoup
from colorama import Fore, Back, Style, init


print(Fore.CYAN + "Lets begin!"")
init(autoreset=True)

url = raw_input("Enter URL: ")

print(Fore.CYAN + "\nGetting form key")


r = requests.get(url)

soup = BeautifulSoup(r.content, "html.parser")

data = soup.find_all("input", {'name': 'form_key', 'type':'hidden'})

for data in data:
    print(Fore.YELLOW + "Found Form Key:")
    print(data)

该程序可以很好地抓取它,但会打印我希望只打印“MmghsMIlPm5bd2Dw”的整行(无引号)

我怎样才能做到这一点??

我尝试过类似的东西

print soup.find(data).text

last_input_tag = soup.find("input", id="value")
print(last_input_tag)

但似乎没有什么真正起作用

【问题讨论】:

标签: python html parsing printing


【解决方案1】:

如果您打印数据并且它显示了整个输入语句,您应该能够通过指定它来打印值

print(data.get('value'))

请参阅此处的文档 https://www.crummy.com/software/BeautifulSoup/bs4/doc/

【讨论】:

  • @cbos93 如果答案是正确的,你应该投票并接受它是正确的。
【解决方案2】:

更一般地...假设html中有多个标签:

from bs4 import BeautifulSoup

html = '''<title><p><input name="form_key" type="hidden" value="MmghsMIlPm5bd2Dw"/>
<input name="form_key" type="hidden" value="abcdefghijklmo"/>
<input name="form_key" type="hidden"/>
</p></title>'''

soup = BeautifulSoup(html, "html.parser")

我们可以搜索所有名称为input的标签。

tags = soup.find_all('input')

然后我们可以循环遍历所有标签以检索具有value 属性的标签。因为标签在底层可以像字典一样对待,所以我们可以使用*.get() 方法来查询属性,就好像它们是键一样。此方法查找名为 value 的属性:

  • 如果找到此属性,该方法将返回与关联的值 属性
  • 如果找不到属性,*.get()方法 将返回您作为第二个参数提供的默认值:

循环浏览标签...

for tag in tags:
    print(tag.get('value', 'value attribute not found'))

=== Output: ===
MmghsMIlPm5bd2Dw
abcdefghijklmo
value attribute not found

【讨论】:

  • 感谢您的回答!我喜欢这有多短!它工作正常,但在输出中,它会打印我需要的值,但也会抛出一个。 "KeyError: 'value'" 这是什么原因?
  • 假设你有多个标签,如果一个或多个标签没有'value'属性,那么你会得到一个KeyError。我将编辑答案以说明这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
  • 2019-04-10
  • 1970-01-01
  • 2021-12-11
  • 2013-05-14
  • 2021-05-21
  • 1970-01-01
相关资源
最近更新 更多