我正在尝试根据我传递的参数获取href ...例如test.py arg1 arg2 ...其中arg1的学校名称类似于“南卡罗来纳州”,所以它必须根据学校检索分数在论证中给出。 这是来自美化源的小片段,我使用urlopen和BeautifulSoup保存。
<a data-ylk="lt:s;sec:mod-sch;slk:game;itc:0;ltxt:;tar:sports.yahoo.com;"
href="/ncaaf/south-carolina-gamecocks-georgia-bulldogs-201309070068/">
<span class="away "> 30 </span>
-
<span class="home winner"> 41 </span> </a>
现在arg1应该与提供的href匹配,以便我可以检索分数..我用
bs.find('a', href="/ncaaf/south-carolina-gamecocks-georgia-bulldogs-201309070068/")
但是,如果我必须将我的论点(例如南卡罗莱纳州)与href相匹配,我该如何匹配呢?像href="/ncaaf/south-carolina-*
之类的东西,这样我就可以通过匹配argument1(我将用连字符替换)来获取整个href,如果我给“gerorgia”,只要匹配参数就可以检索href而不管/ ncaaf /............./
因为我在正则表达式上很差,所以有点复杂
答案 0 :(得分:0)
你确实必须将它与正则表达式匹配。
如果您的命令行参数的格式为south-carolina
sys.argv[1]
,请使用:
import re
school_name = sys.argv[1]
url_pattern = re.compile(r'/ncaaf/{}-'.format(re.escape(school_name)))
matching_links = soup.find_all('a', href=url_pattern)
re.escape()
确保输入中可以解释为正则表达式元字符的任何字符都被正确转义。
south-carolina
导致模式/ncaaf/south-carolina-
匹配包含文字文本/ncaaf/south-carolina-
;你真的不需要包含任何外卡字符,因为re.search()
匹配文字包含就足够了。