0

私はPythonとプログラミングにかなり慣れていません;-)そして私はたった1ページで6000行を超えるウェブサイトからデータをスクレイピングするためのプログラムを書いていますが、それらの約20000千をスクレイピングするつもりです。私はPython2.7.4を使用しています

正規表現の使用方法に関するチュートリアルを見たことがありますが、うまくいきませんでした。私は特定のタグを見つけるためにBeautifulSoupを使用していますが、実際にはそのようなタグを見つける必要があります。

<tr class="room_loop_counter1 maintr">
<tr class="room_loop_counter1 extendedRow">
<tr class="room_loop_counter2 maintr odd">
<tr class="room_loop_counter2 extendedRow odd">
<tr class="room_loop_counter3 maintr">
<tr data-occupancy="2" class="room_loop_counter1 ">
<tr data-occupancy="2" class="room_loop_counter2 odd">
<tr data-occupancy="3" class="room_loop_counter3 ">
<tr data-occupancy="3" class="room_loop_counter4 odd">

など。room_loop_counter1,3の後の引用符の前のスペースについてはよくわかりません。

次のコード行に合う式を書き込もうとしていました。

soup = BeautifulSoup(html_part)

av = soup.find_all('tr', class_=REGULAR_EXP)

REGULAR_EXP = re.compile('"room_loop_counter"\d\s.')

しかし、私は明らかにクラスの間違った正規表現を書きます

有効なものを書く方法は?すべての「room_loop_counter」の後に任意の数の文字(数字、スペース、文字、ただし改行文字ではない)が続く式である必要があると思います。よろしくお願いします。

4

2 に答える 2

0

1文字を意味するdot()を使用する代わりに.、最後に.*任意の数の文字を意味する。を使用します。それでうまくいくはずです。したがって、コードは次のようになります。

REGULAR_EXP = re.compile('"room_loop_counter"\d\s.*')
于 2013-02-07T12:15:22.447 に答える
0

次の正規表現は、すべての「room_loop_counter」の後に任意の数の文字(数字、スペース、文字を検索しますが、改行文字は検索しません)を検索します

room_loop_counter[A-Za-z\d\s]*

正規表現が"room_loop_counter"\d\s.一致し"room_loop_counter"(引用符で囲まれていることに注意してください)、数字、スペース、任意の文字が続きます。

一致しますが、一致"room_loop_counter"1 x"room_loop_counter"3 !ません"room_loop_counter1"

于 2013-02-07T12:09:16.767 に答える