如果在使用 python 和 beautifulsoup 的网页中找到部分匹配项,则显示整个字符串
Display the entire string if a partial match is found in a webpage using python and beautifulsoup
我设法在下面的代码片段中提取了我想要的内容,但我认为它有问题。我需要帮助return根据部分匹配对整个字符串进行处理。
import requests
url = "https://bscscan.com/address/0x88c20beda907dbc60c56b71b102a133c1b29b053#code"
queries = ["twitter", "www.", "https://t.me"]
r = requests.get(url)
for q in queries:
q = q.lower()
if q in r.text.lower():
if q.startswith(tuple(queries)):
print("Found ", q)
else:
print("Not Found ", q)
当前输出:
Found www.
Found https://t.me
想要的输出:#-- return 整个字符串
Found - www.shibuttinu.com
Found - https://t.me/Shibuttinu
Not Found - twitter
您可以使用给定的 queries
构建正则表达式。以下示例假设您的整个字符串以引号 a space 或换行符终止(可能并非总是如此?)
import requests
import re
url = "https://bscscan.com/address/0x88c20beda907dbc60c56b71b102a133c1b29b053#code"
r = requests.get(url)
queries = ["twitter", "www.", "https://t.me"]
re_queries = '|'.join(re.escape(q) for q in queries)
valid_url = "[a-z0-9:/?\-=&.]"
re_query = rf"['\" ]({valid_url}*?({re_queries}){valid_url}*?)['\"\n]"
for match in re.finditer(re_query, r.text, re.I):
print(match.groups()[0])
这将 return 整个字符串作为:
twitter:card
twitter:title
twitter:description
twitter:site
twitter:image
https://www.googletagmanager.com/gtag/js?id=UA-46998878-23
www.shibuttinu.com
https://t.me/shibuttinu
https://www.binance.org/en/smartChain
https://twitter.com/BscScan
Twitter
它试图做的是定位您的所有查询,但前提是它们继续使用某些有效字符,并且也只有它们被括在引号或 space 中。正则表达式语法允许定义这些限制。 re.I
标志的使用允许这些测试不区分大小写(因此无需将文本小写)。
我设法在下面的代码片段中提取了我想要的内容,但我认为它有问题。我需要帮助return根据部分匹配对整个字符串进行处理。
import requests
url = "https://bscscan.com/address/0x88c20beda907dbc60c56b71b102a133c1b29b053#code"
queries = ["twitter", "www.", "https://t.me"]
r = requests.get(url)
for q in queries:
q = q.lower()
if q in r.text.lower():
if q.startswith(tuple(queries)):
print("Found ", q)
else:
print("Not Found ", q)
当前输出:
Found www.
Found https://t.me
想要的输出:#-- return 整个字符串
Found - www.shibuttinu.com
Found - https://t.me/Shibuttinu
Not Found - twitter
您可以使用给定的 queries
构建正则表达式。以下示例假设您的整个字符串以引号 a space 或换行符终止(可能并非总是如此?)
import requests
import re
url = "https://bscscan.com/address/0x88c20beda907dbc60c56b71b102a133c1b29b053#code"
r = requests.get(url)
queries = ["twitter", "www.", "https://t.me"]
re_queries = '|'.join(re.escape(q) for q in queries)
valid_url = "[a-z0-9:/?\-=&.]"
re_query = rf"['\" ]({valid_url}*?({re_queries}){valid_url}*?)['\"\n]"
for match in re.finditer(re_query, r.text, re.I):
print(match.groups()[0])
这将 return 整个字符串作为:
twitter:card
twitter:title
twitter:description
twitter:site
twitter:image
https://www.googletagmanager.com/gtag/js?id=UA-46998878-23
www.shibuttinu.com
https://t.me/shibuttinu
https://www.binance.org/en/smartChain
https://twitter.com/BscScan
Twitter
它试图做的是定位您的所有查询,但前提是它们继续使用某些有效字符,并且也只有它们被括在引号或 space 中。正则表达式语法允许定义这些限制。 re.I
标志的使用允许这些测试不区分大小写(因此无需将文本小写)。