简单的正则表达式,替代开始,替代结束

时间:2012-10-21 17:08:00

标签: python regex scrapy

我有一点问题,我想整天解决。我觉得这很简单,但我无法弄清楚答案。我使用Python编写的 scrapy 。我需要从一些div内容中解析生产者名称。

div的方案是:

<div id=info>...
<html tag, can be p,strong,span,etc>
     Producer(sometimes as Supplier): some code
</end tag>...
</div>

我使用下一个代码:

l.add_xpath('producer_name', "//div[@class='info']", re=u'Producer:\s*(.*)\s?</p>')

一切正常,直到找到“供应商”而不是“生产者”或不同结束标记的页面。

所以我尝试了类似的东西:

l.add_xpath('producer_name', "//div[@class='info']", re=u'[Supplier|Producer]:\s*(.*)\s?[</p>|<br>|</span>|</strong>]')

上述代码不起作用。

2 个答案:

答案 0 :(得分:1)

我相信你的正则表达式中需要括号而不是方括号,即:

l.add_xpath('producer_name', "//div[@class='info']", re=u'(Supplier|Producer):\s*(.*)\s?(</p>|<br>|</span>|</strong>)')

答案 1 :(得分:0)

所以,我想出了我的问题。我决定这样做:

sudo apt-get install python-django

from django.utils.html import strip_tags

producer_name_in = MapCompose(strip_tags,remove_entities)

desc = hxs.select("//div[@class='desc']").extract()[0]
    producer_name = re.search(u'(Producer|Supplier):(.*?)(<br>|</p>|</span>)', desc)
    if producer_name:
        l.add_value('producer_name', producer_name.group(2))