首页 > 解决方案 > 在 python 3 BeautifulSoup 中查找命令没有结果

问题描述

当我输入我想要的地方的全名时,会出现结果,但是当我将其保留为 * 时,它没有找到任何结果,我认为它给出了错误。您有任何解决方案建议吗?如果你用一个例子来解释,我会很高兴。在此先感谢您的时间

import requests
from bs4 import BeautifulSoup
import re
import wget
res = requests.post("https://store.rg-adguard.net/api/GetFiles", "type=CategoryId&url=7d949c6e-f0df-4325-b022-9e031ff18885&ring=WIS&lang=en-US", headers={
    "content-type": "application/x-www-form-urlencoded"
})
html = BeautifulSoup(res.content, "lxml")

a = html.find("a", string=re.compile(
    "54406Simizfo\.WSATools*\.msixbundle"))
    # 54406Simizfo.WSATools_0.1.56.0_neutral_~_f0x555vvp18ze.msixbundle
link = a["href"]
print(link)

输出

Traceback (most recent call last):
  File "filename.py", line 12, in <module>
    link = a["href"]
TypeError: 'NoneType' object is not subscriptable

标签: pythonbeautifulsoup

解决方案


在正则表达式中使用 * 时,您必须封装表达式。采用:

"54406Simizfo\.WSATools(.)*\.msixbundle"

而不仅仅是

"54406Simizfo\.WSATools*\.msixbundle"

(.) 将匹配单个字符。(.)* 将匹配任意数量的字符。


推荐阅读