2

我有一个小问题,我整天都在努力解决。我认为这很简单,但我无法弄清楚答案。我使用用 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>]')

上面的代码不起作用。

4

2 回答 2

1

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

l.add_xpath('producer_name', "//div[@class='info']", re=u'(Supplier|Producer):\s*(.*)\s?(</p>|<br>|</span>|</strong>)')
于 2012-10-21T17:34:10.290 回答
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)) 
于 2012-10-21T22:28:07.953 回答