0

私が渡す引数に基づいて ot fetch 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 などの引数を一致させる必要がある場合はどうすればよいでしょうか。どのように一致させることができますか? 引数1(ハイフンに置き換えます)と一致するだけでhref全体を取得できるようhref="/ncaaf/south-carolina-*に、また、「gerorgia」を指定すると、文字列の位置に関係なく、引数を一致させるだけでhrefを取得できます/ncaaf/............../の後

私は正規表現が苦手なので、少し複雑です

4

1 に答える 1

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()

于 2013-09-08T13:20:40.120 に答える