正则表达式HTML动态表

时间:2018-07-30 09:25:27

标签: python regex web-scraping scrapy

我坚持使用正则表达式语法。我正在尝试为html代码创建一个正则表达式,以查找特定的字符串,该字符串位于表中,并为您提供搜索字符串旁边的下一个列值。

[u'<table> <tr> <td>Ingatlan \xe1llapota</td> <td>fel\xfaj\xedtott</td> </tr> <tr> <td>\xc9p\xedt\xe9s \xe9ve</td> <td>2018</td> </tr> <tr> <td>Komfort</td> <td>luxus</td> </tr> <tr> <td>Energiatan\xfas\xedtv\xe1ny</td> <td class="is-empty">nincs megadva</td> </tr> <tr> <td>Emelet</td> <td>1</td> </tr> <tr> <td>\xc9p\xfclet szintjei</td> <td class="is-empty">nincs megadva</td> </tr> <tr> <td>Lift</td> <td>van</td> </tr> <tr> <td>Belmagass\xe1g</td> <td>3 m vagy magasabb</td> </tr> <tr> <td>F\u0171t\xe9s</td> <td>g\xe1z (cirko)</td> </tr> <tr> <td>L\xe9gkondicion\xe1l\xf3</td> <td>van</td> </tr> </table>', u'<table> <tr> <td>Akad\xe1lymentes\xedtett</td> <td>nem</td> </tr> <tr> <td>F\xfcrd\u0151 \xe9s WC</td> <td>k\xfcl\xf6n \xe9s atlan \xe1llapota')

所以我想创建一个正则表达式来查找“ Ingatlan \ xe1llapota”并返回“ fel \ xfaj \ xedtott”: 英加特兰\ xe1llapota fel \ xfaj \ xedtott

我当前的正则表达式如下:\ bIngatlanállapota\ s +(。*) 我需要合并td标签,并限制搜索字符串(Ingatlanállapota)之后返回的字符串长度。

非常感谢您的帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

如之前指出的那样,使用xpath或CSS代替:

import scrapy

class txt_filter:
    sterm='Ingatlan \xe1llapota'
    txt= '''<table> <tr> <td>Ingatlan \xe1llapota</td> <td>fel\xfaj\xedtott</td> </tr> <tr> <td>\xc9p\xedt\xe9s \xe9ve</td> <td>2018</td> </tr> <tr> <td>Komfort</td> <td>luxus</td> </tr> <tr> <td>Energiatan\xfas\xedtv\xe1ny</td> <td class="is-empty">nincs megadva</td> </tr> <tr> <td>Emelet</td> <td>1</td> </tr> <tr> <td>\xc9p\xfclet szintjei</td> <td class="is-empty">nincs megadva</td> </tr> <tr> <td>Lift</td> <td>van</td> </tr> <tr> <td>Belmagass\xe1g</td> <td>3 m vagy magasabb</td> </tr> <tr> <td>F\u0171t\xe9s</td> <td>g\xe1z (cirko)</td> </tr> <tr> <td>L\xe9gkondicion\xe1l\xf3</td> <td>van</td> </tr> </table>', u'<table> <tr> <td>Akad\xe1lymentes\xedtett</td> <td>nem</td> </tr> <tr> <td>F\xfcrd\u0151 \xe9s WC</td> <td>k\xfcl\xf6n \xe9s atlan </td></tr></table>
    '''
    resp = scrapy.http.response.text.TextResponse(body=txt,url='abc',encoding='utf-8')
    print(resp.xpath('.//td[.="'+sterm+'"]/following-sibling::td[1]/text()').extract())

结果:

$ python3 so_51590811.py 
['felújított']