0

我对python和编程很陌生;-),我正在编写一个程序来从只有一页的6000多行的网站上抓取数据,而我将抓取大约2000万条数据. 我正在使用 python 2.7.4

我看过一些关于如何使用正则表达式的教程,但它对我不起作用。我正在使用 Beautiful Soup 来查找特定的标签,实际上我需要找到这样的标签:

<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

最后使用 a 代替.表示一个字符的点(),.*这表示任意数量的字符。这应该够了吧。所以你的代码将变成:

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 回答