使用 BeautifulSoup 到 return 属性

Use BeautifulSoup to return attribute

我正在尝试获取元素的属性,但我得到了该元素的 None 这是我的代码

import requests
from bs4 import BeautifulSoup as bs

res = requests.get('https://services.paci.gov.kw/card/inquiry?lang=ar&serviceType=2')
#print(res.text)
with open('Output.txt', 'w') as f:
    f.write(str(res.text))


soup = bs(res.text, 'html.parser')
vToken = soup.find('input', attrs={'name': '__RequestVerificationToken'}, first=True)
print(vToken)
print(vToken['value'])

我检查了 Output.txt 文件,发现该属性已实现但无法获取其属性

添加 headers 就可以了:

import requests
from bs4 import BeautifulSoup as bs

headers = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:98.0) Gecko/20100101 Firefox/98.0",
}

url = 'https://services.paci.gov.kw/card/inquiry?lang=ar&serviceType=2'
soup = bs(requests.get(url, headers=headers).text, 'html.parser')
vToken = soup.find('input', attrs={'name': '__RequestVerificationToken'})
print(vToken['value'])

输出:

CfDJ8KYexE-JuUdFv8XKqnZO6wgPM1_Pmaf96y1YdvqHY2mJLJtbNiU0p4tU3xVQSudgrpBxQmINXC8dopZp6NEb3rl-GRhpmSfDrUwn8_uGnNKB6u7cHDNNNIXo-bGEH0gNz6nq4IIWfIgdDqQxl47E6vQ

跳过 find() 中的 first=True 参数,它会抛出:

 TypeError: 'NoneType' object is not subscriptable

示例:

import requests
from bs4 import BeautifulSoup as bs

res = requests.get('https://services.paci.gov.kw/card/inquiry?lang=ar&serviceType=2')

soup = bs(res.text, 'html.parser')
vToken = soup.find('input', attrs={'name': '__RequestVerificationToken'})

print(vToken['value'])

输出:

CfDJ8Jg8_Y_lKLtGsMsCG9ry3AgPF3n0c5Zc7jzzJ0hYmIv2my6IqtFlABkZLpwb3f9JfCP3-Yhr_P4bvwp_jyw47G6MTcAAUx9ZBE82oSQ4tpSrJxS4vxtJj6LPZ2vaLwGDgiYitq3qYiJmNZvsg_FHOj0